summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-ccp.c
diff options
context:
space:
mode:
authorsteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>2005-09-29 12:25:10 +0000
committersteven <steven@138bc75d-0d04-0410-961f-82ee72b054a4>2005-09-29 12:25:10 +0000
commit908cb59d263cca413d6a47836cee043d3b3b9ece (patch)
treebb658ab7113eb0a075f5c79afff242ff5018b2f5 /gcc/tree-ssa-ccp.c
parent19e4a816898df7c2152b9a14ff4d99e6881961d5 (diff)
downloadgcc-908cb59d263cca413d6a47836cee043d3b3b9ece.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104771 138bc75d-0d04-0410-961f-82ee72b054a4
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 1ff15287345..43b8129109b 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;
}