diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2011-12-22 20:18:11 +0000 |
---|---|---|
committer | Aldy Hernandez <aldyh@gcc.gnu.org> | 2011-12-22 20:18:11 +0000 |
commit | ee777b71644eda0bf9e3c6dc81e6518ed594ec8a (patch) | |
tree | 5a4973303a5a18453debd3fb5105c8ce93b7c9b7 | |
parent | a05fe1907110a339405d369b6824a4afd35ed9dd (diff) | |
download | gcc-ee777b71644eda0bf9e3c6dc81e6518ed594ec8a.zip gcc-ee777b71644eda0bf9e3c6dc81e6518ed594ec8a.tar.gz gcc-ee777b71644eda0bf9e3c6dc81e6518ed594ec8a.tar.bz2 |
re PR middle-end/51212 (ICE: verify_flow_info failed: BB 3 can not throw but has an EH edge with -fgnu-tm -fnon-call-exceptions and transaction_callable)
PR middle-end/51212
* opts.c (finish_options): Call sorry on -fgnu-tm and
-fnon-call-exceptions combination.
From-SVN: r182636
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/opts.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/tm/pr51212.C | 19 |
3 files changed, 28 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8e7d8e5..e01b24d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-12-22 Aldy Hernandez <aldyh@redhat.com> + + PR middle-end/51212 + * opts.c (finish_options): Call sorry on -fgnu-tm and + -fnon-call-exceptions combination. + 2011-12-22 Jonathan Wakely <jwakely.gcc@gmail.com> * doc/invoke.texi (C++ Dialect Options): Add missing options and @@ -663,6 +663,9 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set, opts->x_flag_toplevel_reorder = 0; } + if (opts->x_flag_tm && opts->x_flag_non_call_exceptions) + sorry ("transactional memory is not supported with non-call exceptions"); + /* -Wmissing-noreturn is alias for -Wsuggest-attribute=noreturn. */ if (opts->x_warn_missing_noreturn) opts->x_warn_suggest_attribute_noreturn = true; diff --git a/gcc/testsuite/g++.dg/tm/pr51212.C b/gcc/testsuite/g++.dg/tm/pr51212.C new file mode 100644 index 0000000..9d2971b --- /dev/null +++ b/gcc/testsuite/g++.dg/tm/pr51212.C @@ -0,0 +1,19 @@ +// { dg-do compile } +// { dg-options "-fgnu-tm -fnon-call-exceptions" } + +struct S +{ + S () + { + } +}; + +__attribute__ ((transaction_callable)) +void foo (int *p) +{ + S s; + if (*p) + ; +} + +// { dg-message "sorry, unimplemented: transactional memory is not supported with non-call exceptions" "-fnon-call-exceptions and -fgnu-tm together" { target *-*-* } 0 } |