Workaround broken jump tables on x86-64 COFF.
authorMichael J. Spencer <bigcheesegs@gmail.com>
Mon, 23 Aug 2010 04:45:37 +0000 (04:45 +0000)
committerMichael J. Spencer <bigcheesegs@gmail.com>
Mon, 23 Aug 2010 04:45:37 +0000 (04:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111792 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MCAsmInfoCOFF.cpp
lib/Target/X86/X86ISelLowering.cpp

index 7fc7d7abb232c8283ce663fe7dbfb1d60b68a4f8..45e981b9fcb092e165da5af63782d033297bf2e3 100644 (file)
@@ -20,6 +20,7 @@ MCAsmInfoCOFF::MCAsmInfoCOFF() {
   GlobalPrefix = "_";
   COMMDirectiveAlignmentIsInBytes = false;
   HasLCOMMDirective = true;
+  HasSetDirective = false;
   HasDotTypeDotSizeDirective = false;
   HasSingleParameterDotFile = false;
   PrivateGlobalPrefix = "L";  // Prefix for private global symbols
index a2e2806c2e618460fdcbdd6030bfc94d653027f7..9b0c5297e443a1ed6723aac8df610192dd46f370 100644 (file)
@@ -1029,6 +1029,12 @@ X86TargetLowering::X86TargetLowering(X86TargetMachine &TM)
   maxStoresPerMemmove = 3; // For @llvm.memmove -> sequence of stores
   setPrefLoopAlignment(16);
   benefitFromCodePlacementOpt = true;
+
+  // FIXME: Jump tables are currently broken for 64 bit COFF.
+  // See PR7960.
+  if (Subtarget->is64Bit() && Subtarget->isTargetCOFF()) {
+    DisableJumpTables = true;
+  }
 }