This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug bootstrap/71399] GCC 5.3.0 bootstrap comparison failure on arm-linux-gnueabihf


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.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]