diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-02-02 09:59:23 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-02-02 09:59:23 +0000 |
commit | f6c35aa46abc8a18ed2b0fdc5481e41f13f549bf (patch) | |
tree | a4e3d45c5608a38ef7f2fedac53599b90299e9f4 /gcc | |
parent | 290423f02f2ce377262b21816ed9ebdd3cc070a5 (diff) | |
download | gcc-f6c35aa46abc8a18ed2b0fdc5481e41f13f549bf.tar.gz |
2011-02-02 Richard Guenther <rguenther@suse.de>
PR tree-optimization/47566
* builtins.c (builtin_save_expr): No SAVE_EXPR for SSA_NAMEs.
* gcc.dg/lto/20110201-1_0.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@169518 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/builtins.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/lto/20110201-1_0.c | 19 |
4 files changed, 33 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a8d1591dd48..2af2c32edd6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-02-02 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/47566 + * builtins.c (builtin_save_expr): No SAVE_EXPR for SSA_NAMEs. + 2011-02-02 Alexandre Oliva <aoliva@redhat.com> PR debug/47106 diff --git a/gcc/builtins.c b/gcc/builtins.c index 5b7b673f90e..106b2ca10b0 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -652,9 +652,10 @@ target_char_cast (tree cst, char *p) static tree builtin_save_expr (tree exp) { - if (TREE_ADDRESSABLE (exp) == 0 - && (TREE_CODE (exp) == PARM_DECL - || (TREE_CODE (exp) == VAR_DECL && !TREE_STATIC (exp)))) + if (TREE_CODE (exp) == SSA_NAME + || (TREE_ADDRESSABLE (exp) == 0 + && (TREE_CODE (exp) == PARM_DECL + || (TREE_CODE (exp) == VAR_DECL && !TREE_STATIC (exp))))) return exp; return save_expr (exp); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c2d6ef4fed6..4040f63e79a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-02-02 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/47566 + * gcc.dg/lto/20110201-1_0.c: New testcase. + 2011-02-02 Alexandre Oliva <aoliva@redhat.com> PR debug/47498 diff --git a/gcc/testsuite/gcc.dg/lto/20110201-1_0.c b/gcc/testsuite/gcc.dg/lto/20110201-1_0.c new file mode 100644 index 00000000000..f5d335572ee --- /dev/null +++ b/gcc/testsuite/gcc.dg/lto/20110201-1_0.c @@ -0,0 +1,19 @@ +/* { dg-lto-do run } */ +/* { dg-lto-options { { -O0 -flto } } } */ +/* { dg-extra-ld-options "-O2 -ffast-math -fuse-linker-plugin" } */ +/* { dg-require-linker-plugin "" } */ + +/* We require a linker plugin because otherwise we'd need to link + against libm which we are not sure here has cabs on all targets. + This is because collect2 invokes ld on the -O0 object code + which does not have folded cabs. */ + +double cabs(_Complex double); +double __attribute__((used)) +foo (_Complex double x, int b) +{ + if (b) + x = 0; + return cabs(x); +} +int main() { return 0; } |