Bug 42991 - [4.5 Regression] cfgexpand.c:2487: Conditional jump or move depends on uninitialised value(s)
Summary: [4.5 Regression] cfgexpand.c:2487: Conditional jump or move depends on uninit...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: debug (show other bugs)
Version: 4.5.0
: P3 normal
Target Milestone: 4.5.0
Assignee: Richard Biener
URL:
Keywords: wrong-debug
: 42993 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-02-07 10:24 UTC by David Binderman
Modified: 2010-02-07 17:18 UTC (History)
2 users (show)

See Also:
Host: x86_64-suse-linux
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2010-02-07 15:22:59


Attachments
C source code (105.48 KB, text/plain)
2010-02-07 10:25 UTC, David Binderman
Details

Note You need to log in before you can comment on or make changes to this bug.
Description David Binderman 2010-02-07 10:24:16 UTC
I just tried to compile the Linux kernel 2.6.33-rc6 under valgrind
with the C compiler version 4.5 snapshot 20100128 and valgrind said

==17102== Conditional jump or move depends on uninitialised value(s)
==17102==    at 0x56D105: expand_debug_expr (cfgexpand.c:2487)
==17102==    by 0x56C912: expand_debug_expr (cfgexpand.c:2876)
==17102==    by 0x570D54: gimple_expand_cfg (cfgexpand.c:2981)
==17102==    by 0x722ECA: execute_one_pass (passes.c:1561)
==17102==    by 0x723154: execute_pass_list (passes.c:1616)
==17102==    by 0x818C94: tree_rest_of_compilation (tree-optimize.c:413)
==17102==    by 0x99A420: cgraph_expand_function (cgraphunit.c:1543)
==17102==    by 0x99CE44: cgraph_optimize (cgraphunit.c:1622)
==17102==    by 0x99D3A4: cgraph_finalize_compilation_unit (cgraphunit.c:1093)
==17102==    by 0x4B0602: c_write_global_declarations (c-decl.c:9537)
==17102==    by 0x7C7AFB: toplev_main (toplev.c:1065)
==17102==    by 0x6568A7C: (below main) (in /lib64/libc-2.10.1.so)
==17102==

Line 2487 of cfgexpand.c is

        if (bitsize == 0)
          return NULL;

Preprocessed source code attached. Flags -Os -g required.
Comment 1 David Binderman 2010-02-07 10:25:39 UTC
Created attachment 19817 [details]
C source code
Comment 2 Richard Biener 2010-02-07 10:58:57 UTC
Which means that likely DEBUG_DECLs do not have DECL_SIZE set properly.
Comment 3 Richard Biener 2010-02-07 15:22:59 UTC
No, this is not really debug-expr related.  We have

struct crypto_tfm {
...
 void *__crt_ctx[] __attribute__ ((__aligned__(__alignof__(unsigned long long))));
};

and the FIELD_DECL for __crt_ctx has DECL_SIZE == 0, so get_inner_reference
on a COMPONENT_REF of __crt_ctx will leave us with *pbitsize uninitialized.

I have a patch.
Comment 4 Richard Biener 2010-02-07 15:29:02 UTC
*** Bug 42993 has been marked as a duplicate of this bug. ***
Comment 5 Richard Biener 2010-02-07 17:18:35 UTC
Subject: Bug 42991

Author: rguenth
Date: Sun Feb  7 17:18:22 2010
New Revision: 156575

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=156575
Log:
2010-02-07  Richard Guenther  <rguenther@suse.de>

	PR middle-end/42991
	* expr.c (get_inner_reference): Always initialize *pbitsize.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/expr.c

Comment 6 Richard Biener 2010-02-07 17:18:48 UTC
Fixed.