Changes in directory llvm/lib/Target/X86:
README.txt updated: 1.134 -> 1.135 X86ATTAsmPrinter.cpp updated: 1.62 -> 1.63 X86AsmPrinter.cpp updated: 1.197 -> 1.198 X86ISelDAGToDAG.cpp updated: 1.108 -> 1.109 X86ISelLowering.cpp updated: 1.260 -> 1.261 X86RegisterInfo.cpp updated: 1.169 -> 1.170 --- Log message: Added some eye-candy for Subtarget type checking Added X86 StdCall & FastCall calling conventions. Codegen will follow. --- Diffs of the changes: (+33 -7) README.txt | 26 ++++++++++++++++++++++++++ X86ATTAsmPrinter.cpp | 2 +- X86AsmPrinter.cpp | 4 ++-- X86ISelDAGToDAG.cpp | 2 +- X86ISelLowering.cpp | 2 +- X86RegisterInfo.cpp | 4 ++-- 6 files changed, 33 insertions(+), 7 deletions(-) Index: llvm/lib/Target/X86/README.txt diff -u llvm/lib/Target/X86/README.txt:1.134 llvm/lib/Target/X86/README.txt:1.135 --- llvm/lib/Target/X86/README.txt:1.134 Fri Sep 15 22:30:19 2006 +++ llvm/lib/Target/X86/README.txt Sun Sep 17 15:25:45 2006 @@ -707,3 +707,29 @@ //===---------------------------------------------------------------------===// +Currently we don't have elimination of redundant stack manipulations. Consider +the code: + +int %main() { +entry: + call fastcc void %test1( ) + call fastcc void %test2( sbyte* cast (void ()* %test1 to sbyte*) ) + ret int 0 +} + +declare fastcc void %test1() + +declare fastcc void %test2(sbyte*) + + +This currently compiles to: + + subl $16, %esp + call _test5 + addl $12, %esp + subl $16, %esp + movl $_test5, (%esp) + call _test6 + addl $12, %esp + +The add\sub pair is really unneeded here. Index: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.62 llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.63 --- llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.62 Thu Sep 14 13:23:27 2006 +++ llvm/lib/Target/X86/X86ATTAsmPrinter.cpp Sun Sep 17 15:25:45 2006 @@ -63,7 +63,7 @@ ".section __TEXT,__textcoal_nt,coalesced,pure_instructions", F); O << "\t.globl\t" << CurrentFnName << "\n"; O << "\t.weak_definition\t" << CurrentFnName << "\n"; - } else if (Subtarget->TargetType == X86Subtarget::isCygwin) { + } else if (Subtarget->isTargetCygwin()) { EmitAlignment(4, F); // FIXME: This should be parameterized somewhere. O << "\t.section\t.llvm.linkonce.t." << CurrentFnName << ",\"ax\"\n"; Index: llvm/lib/Target/X86/X86AsmPrinter.cpp diff -u llvm/lib/Target/X86/X86AsmPrinter.cpp:1.197 llvm/lib/Target/X86/X86AsmPrinter.cpp:1.198 --- llvm/lib/Target/X86/X86AsmPrinter.cpp:1.197 Thu Sep 14 13:23:27 2006 +++ llvm/lib/Target/X86/X86AsmPrinter.cpp Sun Sep 17 15:25:45 2006 @@ -83,7 +83,7 @@ } else O << TAI->getCOMMDirective() << name << "," << Size; } else { - if (Subtarget->TargetType != X86Subtarget::isCygwin) { + if (!Subtarget->isTargetCygwin()) { if (I->hasInternalLinkage()) O << "\t.local\t" << name << "\n"; } @@ -101,7 +101,7 @@ O << "\t.globl " << name << "\n" << "\t.weak_definition " << name << "\n"; SwitchToDataSection(".section __DATA,__const_coal,coalesced", I); - } else if (Subtarget->TargetType == X86Subtarget::isCygwin) { + } else if (Subtarget->isTargetCygwin()) { O << "\t.section\t.llvm.linkonce.d." << name << ",\"aw\"\n" << "\t.weak " << name << "\n"; } else { Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.108 llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.109 --- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.108 Thu Sep 14 18:55:02 2006 +++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Sun Sep 17 15:25:45 2006 @@ -468,7 +468,7 @@ /// the main function. void X86DAGToDAGISel::EmitSpecialCodeForMain(MachineBasicBlock *BB, MachineFrameInfo *MFI) { - if (Subtarget->TargetType == X86Subtarget::isCygwin) + if (Subtarget->isTargetCygwin()) BuildMI(BB, X86::CALLpcrel32, 1).addExternalSymbol("__main"); // Switch the FPU to 64-bit precision mode for better compatibility and speed. Index: llvm/lib/Target/X86/X86ISelLowering.cpp diff -u llvm/lib/Target/X86/X86ISelLowering.cpp:1.260 llvm/lib/Target/X86/X86ISelLowering.cpp:1.261 --- llvm/lib/Target/X86/X86ISelLowering.cpp:1.260 Sun Sep 17 08:06:18 2006 +++ llvm/lib/Target/X86/X86ISelLowering.cpp Sun Sep 17 15:25:45 2006 @@ -3907,7 +3907,7 @@ MachineFunction &MF = DAG.getMachineFunction(); const Function* Fn = MF.getFunction(); if (Fn->hasExternalLinkage() && - Subtarget->TargetType == X86Subtarget::isCygwin && + Subtarget->isTargetCygwin() && Fn->getName() == "main") MF.getInfo<X86FunctionInfo>()->setForceFramePointer(true); Index: llvm/lib/Target/X86/X86RegisterInfo.cpp diff -u llvm/lib/Target/X86/X86RegisterInfo.cpp:1.169 llvm/lib/Target/X86/X86RegisterInfo.cpp:1.170 --- llvm/lib/Target/X86/X86RegisterInfo.cpp:1.169 Fri Sep 8 16:08:13 2006 +++ llvm/lib/Target/X86/X86RegisterInfo.cpp Sun Sep 17 15:25:45 2006 @@ -993,7 +993,7 @@ MFI->setStackSize(NumBytes); if (NumBytes) { // adjust stack pointer: ESP -= numbytes - if (NumBytes >= 4096 && Subtarget->TargetType == X86Subtarget::isCygwin) { + if (NumBytes >= 4096 && Subtarget->isTargetCygwin()) { // Function prologue calls _alloca to probe the stack when allocating // more than 4k bytes in one go. Touching the stack at 4K increments is // necessary to ensure that the guard pages used by the OS virtual memory @@ -1035,7 +1035,7 @@ // If it's main() on Cygwin\Mingw32 we should align stack as well if (Fn->hasExternalLinkage() && Fn->getName() == "main" && - Subtarget->TargetType == X86Subtarget::isCygwin) { + Subtarget->isTargetCygwin()) { MI = BuildMI(X86::AND32ri, 2, X86::ESP).addReg(X86::ESP).addImm(-Align); MBB.insert(MBBI, MI); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits