X86: Call _alldiv instead of __divdi3 on Windows (excluding cygwin).
[oota-llvm.git] / lib / Target / X86 / X86ISelLowering.cpp
index 89ae4e8d966219755b4f58aac13f7464bc819bf1..74fe6473706beff2105c9542366ea927377f8be0 100644 (file)
@@ -96,6 +96,12 @@ X86TargetLowering::X86TargetLowering(X86TargetMachine &TM)
   setSchedulingPreference(Sched::RegPressure);
   setStackPointerRegisterToSaveRestore(X86StackPtr);
 
+  if (Subtarget->isTargetWindows() && !Subtarget->isTargetCygwin()) {
+    // Setup Windows compiler runtime calls.
+    setLibcallName(RTLIB::SDIV_I64, "_alldiv");
+    setLibcallCallingConv(RTLIB::SDIV_I64, CallingConv::X86_StdCall);
+  }
+
   if (Subtarget->isTargetDarwin()) {
     // Darwin should use _setjmp/_longjmp instead of setjmp/longjmp.
     setUseUnderscoreSetJmp(false);