New entry.
[oota-llvm.git] / lib / Target / ARM / README-Thumb.txt
index af02417d125d5cd0965b9d1c3ce1cce7d860179b..3818d831461901af3b8003cb4ffc1bf2435f5c04 100644 (file)
@@ -145,3 +145,12 @@ ldr r2, [r2, #7 * 4]
 This is especially bad when dynamic alloca is used. The all fixed size stack
 objects are referenced off the frame pointer with negative offsets. See
 oggenc for an example.
+
+//===---------------------------------------------------------------------===//
+
+We are reserving R3 as a scratch register under thumb mode. So if it is live in
+to the function, we save / restore R3 to / from R12. Until register scavenging
+is done, we should save R3 to a high callee saved reg at emitPrologue time
+(when hasFP is true or stack size is large) and restore R3 from that register
+instead. This allows us to at least get rid of the save to r12 everytime it is
+used.