diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2017-03-05 17:13:16 +0000 |
---|---|---|
committer | Paolo Carlini <paolo.carlini@oracle.com> | 2017-03-05 17:13:16 +0000 |
commit | 9c72c34566e1937464ad8220d85f159d98e5247d (patch) | |
tree | d591bbf3880cbf38688f87eef1554baae652052a | |
parent | 92988af5a3d03eff733b06bf806e38c318dec9d9 (diff) |
/cp
2017-03-05 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/70266
* except.c (build_must_not_throw_expr): Perform the implicit
conversions on the condition.
/testsuite
2017-03-05 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/70266
* g++.dg/tm/pr70266.C: New.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@245901 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/except.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/tm/pr70266.C | 8 |
4 files changed, 22 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b5587fdfab3..3d7eae90a27 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2017-03-05 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/70266 + * except.c (build_must_not_throw_expr): Perform the implicit + conversions on the condition. + 2017-03-03 Jason Merrill <jason@redhat.com> * mangle.c (mangle_decl): Check -Wnoexcept-type instead of diff --git a/gcc/cp/except.c b/gcc/cp/except.c index bfc32908aec..45d00cc0fc9 100644 --- a/gcc/cp/except.c +++ b/gcc/cp/except.c @@ -268,6 +268,9 @@ build_must_not_throw_expr (tree body, tree cond) if (cond && !value_dependent_expression_p (cond)) { + cond = perform_implicit_conversion_flags (boolean_type_node, cond, + tf_warning_or_error, + LOOKUP_NORMAL); cond = cxx_constant_value (cond); if (integer_zerop (cond)) return body; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index fcaacff3cc9..26bfb0ac170 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-03-05 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/70266 + * g++.dg/tm/pr70266.C: New. + 2017-03-05 Andre Vehreschild <vehre@gcc.gnu.org> Alessandro Fanfarillo <fanfarillo.gcc@gmail.com> diff --git a/gcc/testsuite/g++.dg/tm/pr70266.C b/gcc/testsuite/g++.dg/tm/pr70266.C new file mode 100644 index 00000000000..6f20afb51c6 --- /dev/null +++ b/gcc/testsuite/g++.dg/tm/pr70266.C @@ -0,0 +1,8 @@ +// { dg-do compile { target c++11 } } +// { dg-options "-fgnu-tm" } + +template < typename T > +int foo (int x, T t) +{ + return __transaction_atomic noexcept (foo) (1); // { dg-error "cannot resolve" } +} |