From 5cbf5c20cf75fd44392400db11f3838aec114443 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Wed, 2 Feb 2011 09:59:23 +0000 Subject: [PATCH] re PR middle-end/47566 (ICE in vn_reference_lookup) 2011-02-02 Richard Guenther PR tree-optimization/47566 * builtins.c (builtin_save_expr): No SAVE_EXPR for SSA_NAMEs. * gcc.dg/lto/20110201-1_0.c: New testcase. From-SVN: r169518 --- gcc/ChangeLog | 5 +++++ gcc/builtins.c | 7 ++++--- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/lto/20110201-1_0.c | 19 +++++++++++++++++++ 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/lto/20110201-1_0.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a8d1591..2af2c32 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-02-02 Richard Guenther + + PR tree-optimization/47566 + * builtins.c (builtin_save_expr): No SAVE_EXPR for SSA_NAMEs. + 2011-02-02 Alexandre Oliva PR debug/47106 diff --git a/gcc/builtins.c b/gcc/builtins.c index 5b7b673..106b2ca 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 c2d6ef4..4040f63 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-02-02 Richard Guenther + + PR tree-optimization/47566 + * gcc.dg/lto/20110201-1_0.c: New testcase. + 2011-02-02 Alexandre Oliva 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 0000000..f5d3355 --- /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; } -- 2.7.4