aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2011-06-27 14:32:00 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2011-06-27 14:32:00 +0000
commit1c86160a7a5cf82e15877d22d7e600aac9459bae (patch)
tree7a3cc824ea25c5386da1ec23b8f25344db8d1416 /gcc
parent5da49a9d153a00776bba423734630b8d361dc53f (diff)
downloadgcc-1c86160a7a5cf82e15877d22d7e600aac9459bae.zip
gcc-1c86160a7a5cf82e15877d22d7e600aac9459bae.tar.gz
gcc-1c86160a7a5cf82e15877d22d7e600aac9459bae.tar.bz2
re PR middle-end/49394 (libstdc++-v3/testsuite/30_threads/lock_guard/cons/1.cc FAILs with -fipa-pta -fnon-call-exceptions)
2011-06-27 Richard Guenther <rguenther@suse.de> PR tree-optimization/49394 * passes.c (execute_one_pass): Restore current_pass after applying IPA transforms. * g++.dg/torture/pr49394.C: New testcase. From-SVN: r175532
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/passes.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/torture/pr49394.C50
4 files changed, 63 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c107dfd..9c89885 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2011-06-27 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/49394
+ * passes.c (execute_one_pass): Restore current_pass after
+ applying IPA transforms.
+
2011-06-27 Kai Tietz <ktietz@redhat.com>
* tree-ssa-math-opts.c (do_shift_rotate): Zero bits
diff --git a/gcc/passes.c b/gcc/passes.c
index a03aa3f..fc9767e 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -2030,6 +2030,8 @@ execute_one_pass (struct opt_pass *pass)
do_per_function (apply_ipa_transforms, (void *)&applied);
if (applied)
cgraph_remove_unreachable_nodes (true, dump_file);
+ /* Restore current_pass. */
+ current_pass = pass;
}
if (!quiet_flag && !cfun)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 975409e..7184340 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-06-27 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/49394
+ * g++.dg/torture/pr49394.C: New testcase.
+
2011-06-27 Kai Tietz <ktietz@redhat.com>
* gcc.dg/optimize-bswapdi-2.c: New test.
diff --git a/gcc/testsuite/g++.dg/torture/pr49394.C b/gcc/testsuite/g++.dg/torture/pr49394.C
new file mode 100644
index 0000000..67d521f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr49394.C
@@ -0,0 +1,50 @@
+// { dg-do run }
+// { dg-options "-fipa-pta -fnon-call-exceptions" }
+
+struct Mutex
+{
+ bool locked;
+ ~Mutex ()
+ {
+ if (locked)
+ throw 0;
+ }
+ void lock ()
+ {
+ locked = true;
+ }
+ void unlock ()
+ {
+ if (!locked)
+ throw 0;
+ locked = false;
+ }
+};
+
+struct lock_guard
+{
+ Mutex *m;
+ lock_guard (Mutex *m) : m(m)
+ {
+ }
+ ~lock_guard ()
+ {
+ m->unlock ();
+ }
+};
+
+int
+main ()
+{
+ Mutex m;
+ m.lock ();
+ try
+ {
+ lock_guard l (&m);
+ }
+ catch ( ...)
+ {
+ __builtin_abort ();
+ }
+ return 0;
+}