This is the mail archive of the
mailing list for the GCC project.
Re: [RFC 2/3, debug] Add fkeep-vars-live
On 07/24/2018 01:46 PM, Jakub Jelinek wrote:
> On Tue, Jul 24, 2018 at 01:37:32PM +0200, Tom de Vries wrote:
>> Another drawback is that the fake uses confuse the unitialized warning
>> analysis, so that is switched off for -fkeep-vars-live.
> Is that really needed? I.e. can't you for the purpose of uninitialized
> warning analysis ignore the clobber = var uses?
This seems to work on the test-case that failed during testing
diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c
index 77f090bfa80..953db9ed02d 100644
@@ -132,6 +132,9 @@ warn_uninit (enum opt_code wc, tree t, tree expr,
if (is_gimple_assign (context)
&& gimple_assign_rhs_code (context) == COMPLEX_EXPR)
+ if (gimple_assign_single_p (context)
+ && TREE_CLOBBER_P (gimple_assign_lhs (context)))
if (!has_undefined_value_p (t))
But I don't know the pass well enough to know whether this is a
> Is the -fkeep-vars-live option -fcompare-debug friendly?
I think so, there's no reference to debug flags or instructions.
>> --- a/gcc/cfgexpand.c
>> +++ b/gcc/cfgexpand.c
>> @@ -3533,6 +3533,13 @@ expand_clobber (tree lhs)
>> +static void
>> +expand_use (tree rhs)
>> + rtx target = expand_expr (rhs, NULL_RTX, VOIDmode, EXPAND_NORMAL);
>> + emit_use (target);
> Missing function comment.
>> +Common Report Var(flag_keep_vars_live) Optimization
>> +Add artificial uses of local vars at end of scope.
> at the end of scope?
Is this better?
+Add artificial use for each local variable at the end of the