[llvm-commits] CVS: llvm/lib/Target/X86/README.txt

Chris Lattner sabre at nondot.org
Mon Feb 12 13:20:43 PST 2007



Changes in directory llvm/lib/Target/X86:

README.txt updated: 1.155 -> 1.156
---
Log message:

more notes


---
Diffs of the changes:  (+26 -3)

 README.txt |   29 ++++++++++++++++++++++++++---
 1 files changed, 26 insertions(+), 3 deletions(-)


Index: llvm/lib/Target/X86/README.txt
diff -u llvm/lib/Target/X86/README.txt:1.155 llvm/lib/Target/X86/README.txt:1.156
--- llvm/lib/Target/X86/README.txt:1.155	Mon Feb 12 14:26:34 2007
+++ llvm/lib/Target/X86/README.txt	Mon Feb 12 15:20:26 2007
@@ -874,15 +874,15 @@
   if (X) abort();
 }
 
-is currently compiled to (with -static):
+is currently compiled to:
 
 _test:
         subl $12, %esp
         cmpl $0, 16(%esp)
-        jne LBB1_1      #cond_true
+        jne LBB1_1
         addl $12, %esp
         ret
-LBB1_1: #cond_true
+LBB1_1:
         call L_abort$stub
 
 It would be better to produce:
@@ -895,5 +895,28 @@
         ret
 
 This can be applied to any no-return function call that takes no arguments etc.
+Alternatively, the stack save/restore logic could be shrink-wrapped, producing
+something like this:
+
+_test:
+        cmpl $0, 4(%esp)
+        jne LBB1_1
+        ret
+LBB1_1:
+        subl $12, %esp
+        call L_abort$stub
+
+Both are useful in different situations.  Finally, it could be shrink-wrapped
+and tail called, like this:
+
+_test:
+        cmpl $0, 4(%esp)
+        jne LBB1_1
+        ret
+LBB1_1:
+        pop %eax   # realign stack.
+        call L_abort$stub
+
+Though this probably isn't worth it.
 
 //===---------------------------------------------------------------------===//






More information about the llvm-commits mailing list