diff options
author | Paolo Bonzini <bonzini@gnu.org> | 2009-04-10 16:06:43 +0000 |
---|---|---|
committer | Paolo Bonzini <bonzini@gcc.gnu.org> | 2009-04-10 16:06:43 +0000 |
commit | 4d35e75cf9b4acaca40316a42de29ab3858b5c91 (patch) | |
tree | 38ec6987cc46a8bcdf13c9c03745d832bd8c8eb5 /gcc/fold-const.c | |
parent | b0d3b11d8c1b75fd46510845e2b352e8a22e1e9d (diff) | |
download | gcc-4d35e75cf9b4acaca40316a42de29ab3858b5c91.zip gcc-4d35e75cf9b4acaca40316a42de29ab3858b5c91.tar.gz gcc-4d35e75cf9b4acaca40316a42de29ab3858b5c91.tar.bz2 |
re PR middle-end/39701 (Revision 145846 caused many test failures)
2009-04-10 Paolo Bonzini <bonzini@gnu.org>
PR middle-end/39701
* fold-const.c (tree_single_nonzero_warnv_p): Pass non-static
variables as non-NULL even with -fdelete-null-pointer-checks.
From-SVN: r145927
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r-- | gcc/fold-const.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 821e581..dd2f62d 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -15017,8 +15017,12 @@ tree_single_nonzero_warnv_p (tree t, bool *strict_overflow_p) if (!base) return false; - /* Weak declarations may link to NULL. */ - if (DECL_P (base) && flag_delete_null_pointer_checks) + /* Weak declarations may link to NULL. Other things may also be NULL + so protect with -fdelete-null-pointer-checks; but not variables + allocated on the stack. */ + if (DECL_P (base) + && (flag_delete_null_pointer_checks + || (TREE_CODE (base) == VAR_DECL && !TREE_STATIC (base)))) return !VAR_OR_FUNCTION_DECL_P (base) || !DECL_WEAK (base); /* Constants are never weak. */ |