On 2016.01.01 at 22:33 -0700, Jeff Law wrote:
> On 12/22/2015 03:04 AM, Nick Clifton wrote:
> >Hi Guys,
> >
> > The patch below fixes PR 68770 - a warning from valgrind about an
> > uninitialised value being used in the default_secondary_reload. The
> > problem turns out to the in copy_costs which creates its own secondary
> > reload information structure, but it does not initialise all of the
> > fields. One field in particular - t_icode - is examined by
> > default_secondary_reload, and it was this that was triggering the
> > valgrind warning.
> >
> > Tested with no regressions on a x86_64-pc-linux-gnu and a
> > powerpc64-le-linux-gnu toolchain.
> >
> > OK to apply ?
> >
> >Cheers
> > Nick
> >
> >gcc/ChangeLog
> >2015-12-22 Nick Clifton <[email protected]>
> >
> > PR target/68770
> > * ira-costs.c (copy_cost): Initialise the t_code field of the sri
> > structure.
> Can you please reduce the testcase from the BZ so that it can be included in
> the testsuite? I realize it might take a long time with multidelta because
> of the need to run the compiler with valgrind. But once you've got the
> right script, you ought to be able to just let it run overnight or whatever.
>
> To speed things up, you might consider first trying to compile the case
> without valgrind and if that fails, then that particular reduction is "not
> interesting". That should dramatically cut down on the number of times you
> have to run the compiler under valgrind control.
>
> With a testcase, this is fine.
trippels@gcc2-power8 ~ % cat parallel_settings.ii
struct A {
unsigned long a;
float f;
A() : f(0.01f) {}
};
A s;
trippels@gcc2-power8 ~ % valgrind -q --trace-children=yes g++ -O2 -c
parallel_settings.ii
==149056== Conditional jump or move depends on uninitialised value(s)
==149056== at 0x10A78484: default_secondary_reload(bool, rtx_def*, int,
machine_mode, secondary_reload_info*) (targhooks.c:940)
==149056== by 0x10E50D03: rs6000_secondary_reload(bool, rtx_def*, int,
machine_mode, secondary_reload_info*) (rs6000.c:18414)
==149056== by 0x1085F137: copy_cost(rtx_def*, machine_mode, int, bool,
secondary_reload_info*) [clone .part.7] (ira-costs.c:445)
==149056== by 0x1085F1A7: copy_cost (ira-costs.c:434)
==149056== by 0x1085F1A7: copy_cost(rtx_def*, machine_mode, int, bool,
secondary_reload_info*) [clone .part.7] (ira-costs.c:452)
==149056== by 0x1085F6E3: copy_cost (ira-costs.c:434)
==149056== by 0x1085F6E3: record_reg_classes(int, int, rtx_def**,
machine_mode*, char const**, rtx_insn*, reg_class*) [clone .constprop.43]
(ira-costs.c:984)
==149056== by 0x10861A7F: record_operand_costs(rtx_insn*, reg_class*)
(ira-costs.c:1325)
==149056== by 0x10861FCB: scan_one_insn (ira-costs.c:1462)
==149056== by 0x10861FCB: process_bb_for_costs(basic_block_def*)
(ira-costs.c:1583)
==149056== by 0x10857D2F: ira_traverse_loop_tree(bool, ira_loop_tree_node*,
void (*)(ira_loop_tree_node*), void (*)(ira_loop_tree_node*)) (ira-build.c:1798)
==149056== by 0x108649FF: find_costs_and_classes(_IO_FILE*)
(ira-costs.c:1680)
==149056== by 0x108651B3: ira_costs() (ira-costs.c:2213)
==149056== by 0x1085C09B: ira_build() (ira-build.c:3419)
==149056== by 0x10851D3B: ira (ira.c:5221)
==149056== by 0x10851D3B: (anonymous
namespace)::pass_ira::execute(function*) (ira.c:5513)
==149056==
--
Markus