https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71399
--- Comment #7 from Ludovic Courtès <ludo at gnu dot org> --- > I have attached the diff of stage[23]-gcc/real.c.192r.expand in the hope it > would provide useful info. The diffs are too noisy: due to '-gtoggle', we not only get "# DEBUG" comments in stage2 dumps and not in stage3 dumps, but we also get 'debug_insn's in stage2 that offset all the insn UIDs compared to stage3. (Indeed, I believe the 'real.c.192r.expand' dumps are in fact equivalent modulo "# DEBUG" comments and 'debug_insn' forms.) I narrowed this dump to the 'round_for_format' function since that's where the assembly diverged. Right from the beginning of the function, we see different variable decls: --- real.c.s2.narrowed 2016-06-06 16:10:01.482909061 +0200 +++ real.c.s3.narrowed 2016-06-06 16:09:46.321718424 +0200 @@ -99,10 +99,8 @@ void round_for_format(const real_format* int _119; bool _122; void * _126; - long unsigned int _128; struct real_value * _129; long unsigned int _130; - long unsigned int _131; sizetype _133; long unsigned int _135; unsigned int _136; @@ -110,33 +108,32 @@ void round_for_format(const real_format* long unsigned int _138; long unsigned int _139; sizetype _141; + unsigned int _154; unsigned int _155; - unsigned int _156; - int _157; - void * _158; - bool _159; - unsigned int _161; - struct real_value * _162; - unsigned int _163; + int _156; + void * _157; + bool _158; + unsigned int _160; + struct real_value * _161; + unsigned int _162; + unsigned int _165; unsigned int _166; - unsigned int _167; - struct real_value * _168; + struct real_value * _167; + void * _169; void * _170; - void * _171; - bool _173; - <unnamed-unsigned:26> pretmp_194; - int pretmp_196; - int prephitmp_197; - <unnamed-unsigned:26> pretmp_204; - int pretmp_207; - int prephitmp_209; - <unnamed-unsigned:26> pretmp_210; - int pretmp_212; - int prephitmp_213; + bool _172; + <unnamed-unsigned:26> pretmp_193; + int pretmp_195; + int prephitmp_196; + <unnamed-unsigned:26> pretmp_203; + int pretmp_206; + int prephitmp_208; + <unnamed-unsigned:26> pretmp_209; + int pretmp_211; + int prephitmp_212; ;; basic block 2, loop depth 0 ;; pred: ENTRY - # DEBUG round_up => 0 _14 = BIT_FIELD_REF <*r_13(D), 8, 0>; _15 = _14 & 4; if (_15 != 0) Does that help at all? Any idea on how to get more exploitable debugging data? Alternately, I can give instructions on how to reproduce with GNU Guix, which shouldn't take long.