summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Wendling <isanbard@gmail.com>2011-01-06 00:47:10 +0000
committerBill Wendling <isanbard@gmail.com>2011-01-06 00:47:10 +0000
commit81d40711f31ca263a370d029116f04d81ba6ddf2 (patch)
tree4225284ff317595a005b99d337961be5dcb341a9
parentce3b930a98de69ecc8c23d3ddad6c87a57cc2540 (diff)
downloadbcm5719-llvm-81d40711f31ca263a370d029116f04d81ba6ddf2.tar.gz
bcm5719-llvm-81d40711f31ca263a370d029116f04d81ba6ddf2.zip
PR8918 - When used with MinGW64, LLVM generates a "calll __main" at the
beginning of the "main" function. The assembler complains about the invalid suffix for the 'call' instruction. The right instruction is "callq __main". Patch by KS Sreeram! llvm-svn: 122933
-rw-r--r--llvm/lib/Target/X86/X86ISelDAGToDAG.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
index 7fe4e822609..dd751fad35c 100644
--- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
+++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
@@ -530,9 +530,12 @@ void X86DAGToDAGISel::PreprocessISelDAG() {
void X86DAGToDAGISel::EmitSpecialCodeForMain(MachineBasicBlock *BB,
MachineFrameInfo *MFI) {
const TargetInstrInfo *TII = TM.getInstrInfo();
- if (Subtarget->isTargetCygMing())
+ if (Subtarget->isTargetCygMing()) {
+ unsigned CallOp =
+ Subtarget->is64Bit() ? X86::CALL64pcrel32 : X86::CALLpcrel32;
BuildMI(BB, DebugLoc(),
- TII->get(X86::CALLpcrel32)).addExternalSymbol("__main");
+ TII->get(CallOp)).addExternalSymbol("__main");
+ }
}
void X86DAGToDAGISel::EmitFunctionEntryCode() {
OpenPOWER on IntegriCloud