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 <ni...@redhat.com> > > > > 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