--- ARMJITInfo.cpp | 6 ++++++ 1 file changed, 6 insertions(+) --- a/lib/Target/ARM/ARMJITInfo.cpp +++ b/lib/Target/ARM/ARMJITInfo.cpp @@ -99,7 +99,13 @@ // The above twiddling of the saved return addresses allows us to // deallocate everything, including the LR the stub saved, all in one // pop instruction. +#ifndef __thumb__ "ldmia sp!, {r0, r1, r2, r3, lr, pc}\n" +#else + // thumb dont allow lr and pc to be poped in the same instruction. + "pop {r0, r1, r2, r3, lr}\n" + "pop {pc}\n" +#endif ); #else // Not an ARM host void ARMCompilationCallback() {