Problem is because the input is invalid . We just end up generating ldrex r0, [r1, #-24] .
asm volatile( "movw %1, #1\n\t" "ldrex %2, %0\n\t" "cmp %3, %2\n\t" "bne.n 0f\n\t" "strex %1, %4, %0\n\t" "0:" : "+m"(*location), "=&r"(result), "=&r"(tmp) : "r"(expected), "r"(newValue) : "memory"); Eh - you can't use m for a constraint to an address in ldrex . Try "+Q" instead. regards, Ramana -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1045879 Title: Error: bad immediate value for offset To manage notifications about this bug go to: https://bugs.launchpad.net/gcc/+bug/1045879/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs