On Mon, May 11, 2015 at 4:05 PM, Eric Botcazou wrote:
>> >Would you be OK with a slight variation of your earlier idea, i.e.
>> >calling fold_stmt with a specific valueizer from fold_marked_statements
>> >instead of the implicit no_follow_ssa_edges in the inliner? Something
>> >like:
>> >
>> >tre
> >Would you be OK with a slight variation of your earlier idea, i.e.
> >calling fold_stmt with a specific valueizer from fold_marked_statements
> >instead of the implicit no_follow_ssa_edges in the inliner? Something
> >like:
> >
> >tree
> >follow_anonymous_single_use_edges (tree val)
> >{
> >
>
On May 4, 2015 11:38:42 PM GMT+02:00, Eric Botcazou
wrote:
>> 2015-05-01 Eric Botcazou
>>
>> * expr.c (expand_expr_real_1) : Try to substitute
>constants
>> on the RHS of expressions.
>> * gimple-expr.h (is_gimple_constant): Reorder.
>
>Bummer. This breaks C++ debugging:
>
>+F
> 2015-05-01 Eric Botcazou
>
> * expr.c (expand_expr_real_1) : Try to substitute constants
> on the RHS of expressions.
> * gimple-expr.h (is_gimple_constant): Reorder.
Bummer. This breaks C++ debugging:
+FAIL: gdb.cp/class2.exp: print alpha at marker return 0
+FAIL: gdb.cp
> Hum, the fact that your earlier version created wrong code
> (get_gimple_for_ssa_name
> already returned false here) points at some issues with
> EXPAND_INITIALIZER as well, no...?
Theoritically yes but, in practice, EXPAND_INITIALIZER is used in varasm.c and
for debugging stuff only, so I don'
On Fri, May 1, 2015 at 8:09 PM, Eric Botcazou wrote:
>> OK, how aggressive then? We could as well do the substitution for all
>> copies:
>>
>> /* For EXPAND_INITIALIZER try harder to get something simpler.
>>Otherwise, substitute copies on the RHS, this can propagate
>>const
> OK, how aggressive then? We could as well do the substitution for all
> copies:
>
> /* For EXPAND_INITIALIZER try harder to get something simpler.
>Otherwise, substitute copies on the RHS, this can propagate
>constants at -O0 and thus simplify arithmetic operations. */
>
> Yeah, I think that's a way better place for the hack.
OK, how aggressive then? We could as well do the substitution for all copies:
/* For EXPAND_INITIALIZER try harder to get something simpler.
Otherwise, substitute copies on the RHS, this can propagate
constants at -O
On May 1, 2015 12:27:17 PM GMT+02:00, Eric Botcazou
wrote:
>> Hmm, special-casing this in the inliner looks odd to me. ISTR the
>inliner
>> already propagates constant parameters to immediate uses, so I guess
>> you run into the casting case you handle specially.
>
>Right on both counts, the ori
> Hmm, special-casing this in the inliner looks odd to me. ISTR the inliner
> already propagates constant parameters to immediate uses, so I guess
> you run into the casting case you handle specially.
Right on both counts, the original GIMPLE looks like:
right.3 = (system__storage_elements__in
> On Wed, Apr 29, 2015 at 3:23 PM, Jan Hubicka wrote:
> >> Historically the pragma Inline_Always of GNAT had been implemented in the
> >> FE
> >> because the RTL inliner and then the Tree inliner weren't invoked at -O0 or
> >> powerful enough to inline some constructs. But this approach had
> >
On Wed, Apr 29, 2015 at 3:23 PM, Jan Hubicka wrote:
>> Historically the pragma Inline_Always of GNAT had been implemented in the FE
>> because the RTL inliner and then the Tree inliner weren't invoked at -O0 or
>> powerful enough to inline some constructs. But this approach had drawbacks,
>> espe
> Historically the pragma Inline_Always of GNAT had been implemented in the FE
> because the RTL inliner and then the Tree inliner weren't invoked at -O0 or
> powerful enough to inline some constructs. But this approach had drawbacks,
> especially wrt debug info. These restrictions were gradua
On Wed, Apr 29, 2015 at 11:50 AM, Eric Botcazou wrote:
> Historically the pragma Inline_Always of GNAT had been implemented in the FE
> because the RTL inliner and then the Tree inliner weren't invoked at -O0 or
> powerful enough to inline some constructs. But this approach had drawbacks,
> espec
Historically the pragma Inline_Always of GNAT had been implemented in the FE
because the RTL inliner and then the Tree inliner weren't invoked at -O0 or
powerful enough to inline some constructs. But this approach had drawbacks,
especially wrt debug info. These restrictions were gradually lift
15 matches
Mail list logo