https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61923
Bug ID: 61923 Summary: [4.8/4.9/4.10 Regression] -fcompare-debug errors while building Linux kernel. Product: gcc Version: 4.8.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org Building the Linux kernel with "GCC_COMPARE_DEBUG=1 make" hits several failures. markus@x4 tmp % cat inode.i typedef struct { struct { struct { char head; } tickets; }; } arch_spinlock_t; struct ext4_map_blocks { int m_lblk; int m_len; int m_flags; }; int ext4_da_map_blocks_ei_0; void fn1 (int p1, struct ext4_map_blocks *p2) { int ret; if (p2->m_flags) { ext4_da_map_blocks_ei_0++; arch_spinlock_t *lock; switch (sizeof *&lock->tickets.head) case 1: asm("" : "+m"(*&lock->tickets.head) : ""(0)); __asm__(""); ret = 0; } fn2 (p2->m_lblk, p2->m_len); } markus@x4 tmp % gcc -c -O2 -fcompare-debug inode.i --save-temps gcc: error: inode.i: -fcompare-debug failure (length) markus@x4 tmp % diff -u inode.gkd inode.gk.gkd --- inode.gkd 2014-07-26 22:01:20.578062879 +0200 +++ inode.gk.gkd 2014-07-26 22:01:20.598062450 +0200 @@ -82,7 +82,7 @@ (expr_list:REG_EQUIV (mem:SI (plus:DI (reg/v/f:DI 0 ax [orig:90 p2 ] [90]) (const_int 4 [0x4])) [ p2_3(D)->m_len+0 S4 A32]) (nil))) -(insn:TI# 0 0 4 (set (reg:SI 5 di) +(insn# 0 0 4 (set (reg:SI 5 di) (mem:SI (reg/v/f:DI 0 ax [orig:90 p2 ] [90]) [ p2_3(D)->m_lblk+0 S4 A32])) inode.i:31# {*movsi_internal} (expr_list:REG_DEAD (reg/v/f:DI 0 ax [orig:90 p2 ] [90]) (nil)))