aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-ccp.c
diff options
context:
space:
mode:
authorSteven Bosscher <stevenb@suse.de>2005-09-29 12:25:10 +0000
committerSteven Bosscher <steven@gcc.gnu.org>2005-09-29 12:25:10 +0000
commit1ebd8d9ac1a51af9a1a65f1db575fd2499835074 (patch)
treebb658ab7113eb0a075f5c79afff242ff5018b2f5 /gcc/tree-ssa-ccp.c
parent577b2a064ee8634cd57b36cecddb4e9e2a57e51c (diff)
downloadgcc-1ebd8d9ac1a51af9a1a65f1db575fd2499835074.zip
gcc-1ebd8d9ac1a51af9a1a65f1db575fd2499835074.tar.gz
gcc-1ebd8d9ac1a51af9a1a65f1db575fd2499835074.tar.bz2
re PR tree-optimization/23911 (Failure to propagate constants from a const initializer for _Complex)
gcc/ PR tree-optimization/23911 * tree-ssa-ccp.c (fold_const_aggregate_ref): Handle REALPART_EXPR and IMAGPART_EXPR too. testsuite/ * gcc.dg/pr23911.c: New test. From-SVN: r104771
Diffstat (limited to 'gcc/tree-ssa-ccp.c')
-rw-r--r--gcc/tree-ssa-ccp.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index 1ff1528..43b8129 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -1045,6 +1045,15 @@ fold_const_aggregate_ref (tree t)
return cval;
break;
+ case REALPART_EXPR:
+ case IMAGPART_EXPR:
+ {
+ tree c = fold_const_aggregate_ref (TREE_OPERAND (t, 0));
+ if (c && TREE_CODE (c) == COMPLEX_CST)
+ return fold_build1 (TREE_CODE (t), TREE_TYPE (t), c);
+ break;
+ }
+
default:
break;
}