aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2006-02-07 15:36:44 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2006-02-07 15:36:44 +0000
commit328654cc923fb727e7a1a3b67d3738b1e30af711 (patch)
treea8bd80acafbee89a8f05d4a9fe4a1c34e3452fcf /gcc
parent774b9d213ac7f52fd74f3aca414775356fb6770c (diff)
downloadgcc-328654cc923fb727e7a1a3b67d3738b1e30af711.zip
gcc-328654cc923fb727e7a1a3b67d3738b1e30af711.tar.gz
gcc-328654cc923fb727e7a1a3b67d3738b1e30af711.tar.bz2
re PR c++/26140 (ice on valid C++ code)
2006-02-07 Richard Guenther <rguenther@suse.de> PR c++/26140 Revert 2006-01-30 Richard Guenther <rguenther@suse.de> PR c++/23372 * gimplify.c (gimplify_target_expr): Handle easy cases without creating a temporary. Revert 2006-01-30 Richard Guenther <rguenther@suse.de> PR c++/23372 * gcc.dg/pr23372-1.C: New testcase. * g++.dg/tree-ssa/pr26140.C: New testcase. From-SVN: r110699
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/gimplify.c9
-rw-r--r--gcc/testsuite/ChangeLog10
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/pr26140.C15
-rw-r--r--gcc/testsuite/gcc.dg/pr23372-1.c10
5 files changed, 34 insertions, 19 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b9b1728..5980e12 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2006-02-07 Richard Guenther <rguenther@suse.de>
+
+ PR c++/26140
+ Revert
+ 2006-01-30 Richard Guenther <rguenther@suse.de>
+ PR c++/23372
+ * gimplify.c (gimplify_target_expr): Handle easy cases
+ without creating a temporary.
+
2006-02-07 Pete Steinmetz <steinmtz@us.ibm.com>
* sched-rgn.c (compute_dom_prob_ps, compute_trg_info): Eradicate
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index f64b1cb..8f95127 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -4056,15 +4056,6 @@ gimplify_target_expr (tree *expr_p, tree *pre_p, tree *post_p)
if (init)
{
- /* Try to avoid the temporary if possible. */
- if (TREE_CODE (init) == INDIRECT_REF
- && !TREE_SIDE_EFFECTS (init)
- && !TARGET_EXPR_CLEANUP (targ))
- {
- *expr_p = init;
- return GS_OK;
- }
-
/* TARGET_EXPR temps aren't part of the enclosing block, so add it
to the temps list. */
gimple_add_tmp_var (temp);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index dd2fdab..8502775 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,13 @@
+2006-02-07 Richard Guenther <rguenther@suse.de>
+
+ PR c++/26140
+ Revert
+ 2006-01-30 Richard Guenther <rguenther@suse.de>
+ PR c++/23372
+ * gcc.dg/pr23372-1.C: New testcase.
+
+ * g++.dg/tree-ssa/pr26140.C: New testcase.
+
2006-02-07 Mark Mitchell <mark@codesourcery.com>
PR c++/9737
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr26140.C b/gcc/testsuite/g++.dg/tree-ssa/pr26140.C
new file mode 100644
index 0000000..3e3743f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/tree-ssa/pr26140.C
@@ -0,0 +1,15 @@
+/* { dg-do compile } */
+
+struct Pitch
+{
+ int notename_;
+};
+struct Audio_note
+{
+ Audio_note (Pitch p);
+};
+void create_audio_elements ()
+{
+ Pitch *pit;
+ new Audio_note (*pit);
+}
diff --git a/gcc/testsuite/gcc.dg/pr23372-1.c b/gcc/testsuite/gcc.dg/pr23372-1.c
index 1414947..e69de29 100644
--- a/gcc/testsuite/gcc.dg/pr23372-1.c
+++ b/gcc/testsuite/gcc.dg/pr23372-1.c
@@ -1,10 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-Os" } */
-
-struct A {
- int a[1000];
-};
-void f(struct A);
-void g(struct A *a) { f(*a); }
-
-/* { dg-final { scan-assembler-times "memcpy" 1 } } */