diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-02-10 16:22:29 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-02-10 16:22:29 +0000 |
commit | e15deb4b329bf724d50139ade9b5a0e9b152b130 (patch) | |
tree | eb1fb857e229b58695341024ec649f95610b921f /gcc/function.h | |
parent | a9c1f295d9e02e5d7ccb174df7223b9deeefbb99 (diff) | |
download | gcc-e15deb4b329bf724d50139ade9b5a0e9b152b130.tar.gz |
PR target/39139
* function.h (struct function): Add has_local_explicit_reg_vars
bit.
* gimplify.c (gimplify_bind_expr): Set it if local DECL_HARD_REGISTER
VAR_DECLs were seen.
* tree-ssa-live.c (remove_unused_locals): Recompute
cfun->has_local_explicit_reg_vars.
* tree-ssa-sink.c (statement_sink_location): Don't sink BLKmode
copies or clearings if cfun->has_local_explicit_reg_vars.
* gcc.target/i386/pr39139.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@144065 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.h')
-rw-r--r-- | gcc/function.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/function.h b/gcc/function.h index f78d737b05f..3f03727dfdc 100644 --- a/gcc/function.h +++ b/gcc/function.h @@ -1,6 +1,6 @@ /* Structure for saving state for a nested function. Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2008 + 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GCC. @@ -596,6 +596,10 @@ struct function GTY(()) /* Nonzero if pass_tree_profile was run on this function. */ unsigned int after_tree_profile : 1; + + /* Nonzero if this function has local DECL_HARD_REGISTER variables. + In this case code motion has to be done more carefully. */ + unsigned int has_local_explicit_reg_vars : 1; }; /* If va_list_[gf]pr_size is set to this, it means we don't know how |