This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug bootstrap/71399] GCC 5.3.0 bootstrap comparison failure on arm-linux-gnueabihf
- From: "ludo at gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 06 Jun 2016 14:18:48 +0000
- Subject: [Bug bootstrap/71399] GCC 5.3.0 bootstrap comparison failure on arm-linux-gnueabihf
- Auto-submitted: auto-generated
- References: <bug-71399-4 at http dot gcc dot gnu dot org/bugzilla/>
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.