On 64-bit targets like ppc64, we should use .quad to output pointer directives,
authorChris Lattner <sabre@nondot.org>
Sat, 15 Jul 2006 01:34:12 +0000 (01:34 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 15 Jul 2006 01:34:12 +0000 (01:34 +0000)
not .long.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29157 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter.cpp

index d4facd27a4fd537c498374c27e6576e1a89c777c..6e5dab7851fdc0791e19c298e2a134280ff6bc34 100644 (file)
@@ -217,12 +217,20 @@ void AsmPrinter::EmitJumpTableInfo(MachineJumpTableInfo *MJTI) {
   
   SwitchToDataSection(JumpTableSection, 0);
   EmitAlignment(Log2_32(TD->getPointerAlignment()));
+  
+  // Pick the directive to use based on the pointer size. FIXME: when we support
+  // PIC jumptables, this should always use the 32-bit directive for label
+  // differences. 
+  const char *PtrDataDirective = Data32bitsDirective;
+  if (TD->getPointerSize() == 8)
+    PtrDataDirective = Data64bitsDirective;
+
   for (unsigned i = 0, e = JT.size(); i != e; ++i) {
     O << PrivateGlobalPrefix << "JTI" << getFunctionNumber() << '_' << i 
       << ":\n";
     const std::vector<MachineBasicBlock*> &JTBBs = JT[i].MBBs;
     for (unsigned ii = 0, ee = JTBBs.size(); ii != ee; ++ii) {
-      O << Data32bitsDirective << ' ';
+      O << PtrDataDirective << ' ';
       printBasicBlockLabel(JTBBs[ii]);
       O << '\n';
     }