Commit 81e4859a by Jakub Jelinek Committed by Jakub Jelinek

cp-gimplify.c (cp_maybe_instrument_return): Don't add __builtin_unreachable if…

cp-gimplify.c (cp_maybe_instrument_return): Don't add __builtin_unreachable if -O0 or if -fsanitize=unreachable.

	* cp-gimplify.c (cp_maybe_instrument_return): Don't add
	__builtin_unreachable if -O0 or if -fsanitize=unreachable.

	* g++.dg/missing-return.C: Add -O to dg-options.

From-SVN: r255403
parent 98966963
2017-12-05 Jakub Jelinek <jakub@redhat.com>
* cp-gimplify.c (cp_maybe_instrument_return): Don't add
__builtin_unreachable if -O0 or if -fsanitize=unreachable.
2017-12-04 Jason Merrill <jason@redhat.com> 2017-12-04 Jason Merrill <jason@redhat.com>
PR c++/83273 - constexpr if allows non-constant condition PR c++/83273 - constexpr if allows non-constant condition
......
...@@ -1554,6 +1554,18 @@ cp_maybe_instrument_return (tree fndecl) ...@@ -1554,6 +1554,18 @@ cp_maybe_instrument_return (tree fndecl)
|| !targetm.warn_func_return (fndecl)) || !targetm.warn_func_return (fndecl))
return; return;
if (!sanitize_flags_p (SANITIZE_RETURN, fndecl)
/* Don't add __builtin_unreachable () if not optimizing, it will not
improve any optimizations in that case, just break UB code.
Don't add it if -fsanitize=unreachable -fno-sanitize=return either,
UBSan covers this with ubsan_instrument_return above where sufficient
information is provided, while the __builtin_unreachable () below
if return sanitization is disabled will just result in hard to
understand runtime error without location. */
&& (!optimize
|| sanitize_flags_p (SANITIZE_UNREACHABLE, fndecl)))
return;
tree t = DECL_SAVED_TREE (fndecl); tree t = DECL_SAVED_TREE (fndecl);
while (t) while (t)
{ {
......
2017-12-05 Jakub Jelinek <jakub@redhat.com>
* g++.dg/missing-return.C: Add -O to dg-options.
2017-12-04 Jeff Law <law@redhat.com> 2017-12-04 Jeff Law <law@redhat.com>
PR tree-optimization/78496 PR tree-optimization/78496
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-options "-Wreturn-type -fdump-tree-optimized" } */ /* { dg-options "-Wreturn-type -fdump-tree-optimized -O" } */
int foo(int a) int foo(int a)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment