Re: [patch] Fix segfault during inlining of thunk

2019-01-23 Thread Richard Biener
On Wed, Jan 23, 2019 at 10:48 AM Eric Botcazou wrote: > > Hi, > > this is a regression present in Ada on the mainline since we switched to using > the internal support for thunks: expand_thunk segfaults during inlining when > trying to access the DECL_RESULT of the special alias built to make the

[patch] Fix segfault during inlining of thunk

2019-01-23 Thread Eric Botcazou
Hi, this is a regression present in Ada on the mainline since we switched to using the internal support for thunks: expand_thunk segfaults during inlining when trying to access the DECL_RESULT of the special alias built to make the call from the thunk local, if the DECL_RESULT of the thunk is

Re: [PATCH] Fix segfault with inlining

2013-09-17 Thread Eric Botcazou
I've looked at the C++ testcase int foo (int x) { try { return x; } catch (...) { return 0; } } which exhibits exactly the behavior you quote - return x is considered throwing an exception. The C++ FE doesn't arrange for TREE_THIS_NOTRAP to be set here (maybe

Re: [PATCH] Fix segfault with inlining

2013-09-17 Thread Richard Biener
On Tue, Sep 17, 2013 at 9:03 AM, Eric Botcazou ebotca...@adacore.com wrote: I've looked at the C++ testcase int foo (int x) { try { return x; } catch (...) { return 0; } } which exhibits exactly the behavior you quote - return x is considered throwing an exception.

Re: [PATCH] Fix segfault with inlining

2013-09-17 Thread Eric Botcazou
Yeah, I thought testing for a PARM_DECL should be sufficient? For nested functions references to outer parms should have been lowered via the static chain at the point tree-inline.c sees them. OK for the latter point, but are you sure for the former? My understanding is that we're already

Re: [PATCH] Fix segfault with inlining

2013-09-17 Thread Jakub Jelinek
On Fri, Sep 13, 2013 at 04:29:48PM +0200, Eric Botcazou wrote: @@ -4748,6 +4774,8 @@ copy_gimple_seq_and_replace_locals (gimp id.transform_call_graph_edges = CB_CGE_DUPLICATE; id.transform_new_cfg = false; id.transform_return_to_modify = false; + id.transform_parameter = false; +

Re: [PATCH] Fix segfault with inlining

2013-09-17 Thread Richard Biener
On Tue, Sep 17, 2013 at 10:42 AM, Eric Botcazou ebotca...@adacore.com wrote: Yeah, I thought testing for a PARM_DECL should be sufficient? For nested functions references to outer parms should have been lowered via the static chain at the point tree-inline.c sees them. OK for the latter

Re: [PATCH] Fix segfault with inlining

2013-09-17 Thread Eric Botcazou
That's true... so you can only simplify is_parameter_of by dropping the context check. OK, thanks, installed with this modification and the fix for the oversight spotted by Jakub, after retesting on x86-64/Linux. -- Eric Botcazou

Re: [PATCH] Fix segfault with inlining

2013-09-16 Thread Richard Biener
On Fri, Sep 13, 2013 at 4:29 PM, Eric Botcazou ebotca...@adacore.com wrote: Hi, in Ada parameters can be passed by reference: in this case, the address of the argument is directly passed to the callee, which dereferences it to access the argument; now Ada also enables -fexceptions

Re: [PATCH] Fix segfault with inlining

2013-09-16 Thread Jason Merrill
On 09/16/2013 05:28 AM, Richard Biener wrote: which exhibits exactly the behavior you quote - return x is considered throwing an exception. The C++ FE doesn't arrange for TREE_THIS_NOTRAP to be set here (maybe due to this issue you quote?). I haven't been aware of TREE_THIS_NOTRAP, but we

[PATCH] Fix segfault with inlining

2013-09-13 Thread Eric Botcazou
Hi, in Ada parameters can be passed by reference: in this case, the address of the argument is directly passed to the callee, which dereferences it to access the argument; now Ada also enables -fexceptions -fnon-call-exceptions, which means that any pointer dereference is seen as the potential