https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70826

--- Comment #4 from Bill Seurer <seurer at linux dot vnet.ibm.com> ---
From poking around in gdb it is dying on line 1078 in the code from the
VERIFY_CR macro (part of VERIFY_REGS) though "where" shows line 1070 for some
reason.  


#ifndef __NO_FPRS__
  b_all ();
  VERIFY_REGS;
  b_cvfr ();
  VERIFY_REGS;
  b_vfr ();
  VERIFY_REGS;
  b_cvf ();
  VERIFY_REGS;
  b_vf ();
  VERIFY_REGS;  // line 1078, dies here
#endif

#define VERIFY_CR ({ int tmp; __asm__ __volatile__ ("mfcr %0" : "=r" (tmp)); if
((tmp & ((15 << 20) | (15 << 16) | (15 << 12))) != ((6 << 20) | (7 << 16) | (8
<< 12))) abort (); })

(gdb) print /x tmp
$2 = 0x22278082
(gdb) print /x $cr
$4 = 0x22278082

After the bit manipulation the value in the CR comes out as 0x00278000 but it
is being compared to 0x00678000 and thus the abort.

Reply via email to