Created attachment 22544 [details] Testcase Compile testcase with: gcc-4.5.1 -MP -MMD -pipe -m32 -Os -march=i686 -mpreferred-stack-boundary=2 -mregparm=3 -fdata-sections -ffunction-sections -fomit-frame-pointer -freg-struct-return -freorder-blocks -funit-at-a-time -fno-exceptions -fno-rtti -fno-stack-protector -fvisibility-inlines-hidden -Wall -Wextra -Waggregate-return -Wcast-align -Wcast-qual -Wconversion -Wdisabled-optimization -Wformat=2 -Wmissing-format-attribute -Wmissing-noreturn -Wpacked -Wpointer-arith -Wredundant-decls -Wshadow -Wwrite-strings -Wabi -Wctor-dtor-privacy -Wno-non-virtual-dtor -Wold-style-cast -Woverloaded-virtual -Wsign-promo -Wframe-larger-than=64 -Wlogical-op -Wstrict-null-sentinel -Wstrict-overflow=5 -Wvolatile-register-var -c testcase.cc -o testcase.o This results in: 00000000 <Ec::generate_wrong_code()>: 0: 53 push %ebx 1: b8 01 00 00 00 mov $0x1,%eax 6: e8 fc ff ff ff call 7 <Ec::generate_wrong_code()+0x7> b: 31 d2 xor %edx,%edx d: 31 c9 xor %ecx,%ecx f: 6a 00 push $0x0 11: 6a 00 push $0x0 13: 6a 00 push $0x0 15: 89 c3 mov %eax,%ebx 17: e8 fc ff ff ff call 18 <Ec::generate_wrong_code()+0x18> 1c: 8b 15 00 00 00 00 mov 0x0,%edx 22: 31 c0 xor %eax,%eax 24: f0 0f b1 1a lock cmpxchg %ebx,(%edx) 28: 83 c4 0c add $0xc,%esp 2b: 74 07 je 34 <Ec::generate_wrong_code()+0x34> 2d: b8 01 00 00 00 mov $0x1,%eax 32: eb 02 jmp 36 <Ec::generate_wrong_code()+0x36> 34: 31 c0 xor %eax,%eax 36: e8 fc ff ff ff call 37 <Ec::generate_wrong_code()+0x37> The "add" at offset 28 is messing up the flags for the "je" at offset 2b.
Fixed for a long time already. *** This bug has been marked as a duplicate of bug 45292 ***