Richard Biener wrote:
This fixes PR56694 - the code keeping BLOCKs live is not looking
at the EH tree for references. In the must-not-throw failure_loc
such references can now appear.
Fixed by reverting that to 4.7 behavior.
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied to trunk
and 4.8 branch.
Richard.
2013-03-25 Richard Biener <rguent...@suse.de>
PR middle-end/56694
* tree-eh.c (lower_eh_must_not_throw): Strip BLOCKs from the
must-not-throw stmt location.
* g++.dg/torture/pr56694.C: New testcase.
Index: gcc/tree-eh.c
===================================================================
*** gcc/tree-eh.c (revision 197029)
--- gcc/tree-eh.c (working copy)
*************** lower_eh_must_not_throw (struct leh_stat
*** 1855,1861 ****
this_region = gen_eh_region_must_not_throw (state->cur_region);
this_region->u.must_not_throw.failure_decl
= gimple_eh_must_not_throw_fndecl (inner);
! this_region->u.must_not_throw.failure_loc = gimple_location (tp);
/* In order to get mangling applied to this decl, we must mark it
used now. Otherwise, pass_ipa_free_lang_data won't think it
--- 1855,1862 ----
this_region = gen_eh_region_must_not_throw (state->cur_region);
this_region->u.must_not_throw.failure_decl
= gimple_eh_must_not_throw_fndecl (inner);
! this_region->u.must_not_throw.failure_loc
! = LOCATION_LOCUS (gimple_location (tp));
/* In order to get mangling applied to this decl, we must mark it
used now. Otherwise, pass_ipa_free_lang_data won't think it
Index: gcc/testsuite/g++.dg/torture/pr56694.C
===================================================================
*** gcc/testsuite/g++.dg/torture/pr56694.C (revision 0)
--- gcc/testsuite/g++.dg/torture/pr56694.C (working copy)
***************
*** 0 ****
--- 1,30 ----
+ // { dg-do compile }
+ // { dg-options "-fopenmp" }
+
Hi,
This fails to build on 'bare-metal'(non-OS) targets. The attached patch fixes
this from FAIL -> UNSUPPORTED for bare-metal targets.
Tested on bare-metal aarch64 (aarch64-none-elf).
OK?
Thanks,
Tejas Belagod.
ARM.
Changelog:
2013-03-28 Tejas Belagod <tejas.bela...@arm.com>
testsuite/
* g++.dg/torture/pr56694.C: Fix test case to build on bare-metal
targets.
diff --git a/gcc/testsuite/g++.dg/torture/pr56694.C
b/gcc/testsuite/g++.dg/torture/pr56694.C
index 22bfe3c..d3de051 100644
--- a/gcc/testsuite/g++.dg/torture/pr56694.C
+++ b/gcc/testsuite/g++.dg/torture/pr56694.C
@@ -1,5 +1,6 @@
// { dg-do compile }
// { dg-options "-fopenmp" }
+// { dg-require-effective-target fopenmp }
class GException {
public: