On Thu, 28 Mar 2013, Tejas Belagod wrote:

> 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?

Ok for trunk and branch.

Thanks,
Richard.

> 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.

Reply via email to