[PATCH] condition decision based on uninitialized memory

Martin Liška mliska@suse.cz
Fri Dec 5 15:09:00 GMT 2014


On 12/05/2014 02:00 PM, Jakub Jelinek wrote:
> On Fri, Dec 05, 2014 at 01:36:07PM +0100, Martin Liška wrote:
>> I've just spent some time hunting memory leaks related to my isolated branch.
>> Valgrind reports many following errors:
>>
>> ==13612== Conditional jump or move depends on uninitialised value(s)
>> ==13612==    at 0xAC72A4: sparseset_bit_p (sparseset.h:147)
>> ==13612==    by 0xAC72A4: sparseset_and_compl(sparseset_def*, sparseset_def*, sparseset_def*) (sparseset.c:190)
>> ==13612==    by 0x9B296C: process_bb_lives(basic_block_def*, int&, bool) (lra-lives.c:885)
>> ==13612==    by 0x9B394A: lra_create_live_ranges_1(bool, bool) (lra-lives.c:1264)
>> ==13612==    by 0x9B426F: lra_create_live_ranges(bool, bool) (lra-lives.c:1329)
>> ==13612==    by 0x99B4A3: lra(_IO_FILE*) (lra.c:2350)
>> ==13612==    by 0x959B79: do_reload (ira.c:5391)
>> ==13612==    by 0x959B79: (anonymous namespace)::pass_reload::execute(function*) (ira.c:5561)
>> ==13612==    by 0xA22127: execute_one_pass(opt_pass*) (passes.c:2311)
>> ==13612==    by 0xA225F5: execute_pass_list_1(opt_pass*) (passes.c:2363)
>> ==13612==    by 0xA22607: execute_pass_list_1(opt_pass*) (passes.c:2364)
>> ==13612==    by 0xA22648: execute_pass_list(function*, opt_pass*) (passes.c:2374)
>> ==13612==    by 0x726F04: cgraph_node::expand() (cgraphunit.c:1773)
>> ==13612==    by 0x727BCF: output_in_order(bool) (cgraphunit.c:2011)
>>
>> Following patch just replaces XNEWVAR with XCNEWVAR and it solves all these errors.
>> Ready for trunk?
>
> No.  sparseset is intentionally uninitialized. If you build with valgrind
> checking, sparseset is properly instrumented so that valgrind doesn't
> complain, otherwise just ignore those.
>
> 	Jakub
>

Thank you Jakub for reply, bergner explained me already situation.
Valgrind checking is new for me ;)

Martin



More information about the Gcc-patches mailing list