diff options
Diffstat (limited to 'lib/Target')
-rw-r--r-- | lib/Target/CBackend/CBackend.cpp | 10 | ||||
-rw-r--r-- | lib/Target/X86/X86ISelDAGToDAG.cpp | 31 |
2 files changed, 0 insertions, 41 deletions
diff --git a/lib/Target/CBackend/CBackend.cpp b/lib/Target/CBackend/CBackend.cpp index ff95e90..0221174 100644 --- a/lib/Target/CBackend/CBackend.cpp +++ b/lib/Target/CBackend/CBackend.cpp @@ -1415,16 +1415,6 @@ static void generateCompilerSpecificCode(std::ostream& Out) { // Output target-specific code that should be inserted into main. Out << "#define CODE_FOR_MAIN() /* Any target-specific code for main()*/\n"; - // On X86, set the FP control word to 64-bits of precision instead of 80 bits. - Out << "#if defined(__GNUC__) && !defined(__llvm__)\n" - << "#if defined(i386) || defined(__i386__) || defined(__i386) || " - << "defined(__x86_64__)\n" - << "#undef CODE_FOR_MAIN\n" - << "#define CODE_FOR_MAIN() \\\n" - << " {short F;__asm__ (\"fnstcw %0\" : \"=m\" (*&F)); \\\n" - << " F=(F&~0x300)|0x200;__asm__(\"fldcw %0\"::\"m\"(*&F));}\n" - << "#endif\n#endif\n"; - } /// FindStaticTors - Given a static ctor/dtor list, unpack its contents into diff --git a/lib/Target/X86/X86ISelDAGToDAG.cpp b/lib/Target/X86/X86ISelDAGToDAG.cpp index 81a4838..6cd3cbe 100644 --- a/lib/Target/X86/X86ISelDAGToDAG.cpp +++ b/lib/Target/X86/X86ISelDAGToDAG.cpp @@ -130,8 +130,6 @@ namespace { /// SelectionDAGISel when it has created a SelectionDAG for us to codegen. virtual void InstructionSelectBasicBlock(SelectionDAG &DAG); - virtual void EmitFunctionEntryCode(Function &Fn, MachineFunction &MF); - virtual bool CanBeFoldedBy(SDNode *N, SDNode *U, SDNode *Root) const; // Include the pieces autogenerated from the target description. @@ -164,8 +162,6 @@ namespace { std::vector<SDOperand> &OutOps, SelectionDAG &DAG); - void EmitSpecialCodeForMain(MachineBasicBlock *BB, MachineFrameInfo *MFI); - inline void getAddressOperands(X86ISelAddressMode &AM, SDOperand &Base, SDOperand &Scale, SDOperand &Index, SDOperand &Disp) { @@ -542,33 +538,6 @@ void X86DAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) { } } -/// EmitSpecialCodeForMain - Emit any code that needs to be executed only in -/// the main function. -void X86DAGToDAGISel::EmitSpecialCodeForMain(MachineBasicBlock *BB, - MachineFrameInfo *MFI) { - const TargetInstrInfo *TII = TM.getInstrInfo(); - if (Subtarget->isTargetCygMing()) - BuildMI(BB, TII->get(X86::CALLpcrel32)).addExternalSymbol("__main"); - - // Switch the FPU to 64-bit precision mode for better compatibility and speed. - int CWFrameIdx = MFI->CreateStackObject(2, 2); - addFrameReference(BuildMI(BB, TII->get(X86::FNSTCW16m)), CWFrameIdx); - - // Set the high part to be 64-bit precision. - addFrameReference(BuildMI(BB, TII->get(X86::MOV8mi)), - CWFrameIdx, 1).addImm(2); - - // Reload the modified control word now. - addFrameReference(BuildMI(BB, TII->get(X86::FLDCW16m)), CWFrameIdx); -} - -void X86DAGToDAGISel::EmitFunctionEntryCode(Function &Fn, MachineFunction &MF) { - // If this is main, emit special code for main. - MachineBasicBlock *BB = MF.begin(); - if (Fn.hasExternalLinkage() && Fn.getName() == "main") - EmitSpecialCodeForMain(BB, MF.getFrameInfo()); -} - /// MatchAddress - Add the specified node to the specified addressing mode, /// returning true if it cannot be done. This just pattern matches for the /// addressing mode |