aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mmitchel@gcc.gnu.org>2001-07-01 20:50:03 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2001-07-01 20:50:03 +0000
commitc54b0a5e4b261487b58d4ec2db7219f8f5c7233d (patch)
treeadfd7bbb9c5ae27997b84e55b147cbff86b52a22
parent074919faeaece80caae9f7873dba67a596e28377 (diff)
downloadgcc-c54b0a5e4b261487b58d4ec2db7219f8f5c7233d.zip
gcc-c54b0a5e4b261487b58d4ec2db7219f8f5c7233d.tar.gz
gcc-c54b0a5e4b261487b58d4ec2db7219f8f5c7233d.tar.bz2
expr.c (expand_expr, [...]): Correct check for side-effects in the value of an array element.
* expr.c (expand_expr, case ARRAY_REF): Correct check for side-effects in the value of an array element. From-SVN: r43680
-rw-r--r--gcc/expr.c2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/array6.C20
2 files changed, 21 insertions, 1 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index c5276f2..afa55a6 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -6902,7 +6902,7 @@ expand_expr (exp, target, tmode, modifier)
elem = TREE_CHAIN (elem))
;
- if (elem && !TREE_SIDE_EFFECTS (elem))
+ if (elem && !TREE_SIDE_EFFECTS (TREE_VALUE (elem)))
return expand_expr (fold (TREE_VALUE (elem)), target,
tmode, ro_modifier);
}
diff --git a/gcc/testsuite/g++.old-deja/g++.other/array6.C b/gcc/testsuite/g++.old-deja/g++.other/array6.C
new file mode 100644
index 0000000..ab076f2
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.other/array6.C
@@ -0,0 +1,20 @@
+// Special g++ Options: -O1
+
+int count = 0;
+
+double foo () {
+ count++;
+ return 0;
+};
+
+double bar () {
+ const double x[1] = { foo() };
+ return x[0];
+};
+
+int main ()
+{
+ bar();
+ if (count != 1)
+ return 1;
+};