Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
  • 10 commits
  • 17 files changed
  • 0 comments
  • 6 contributors
Jun 24, 2011
Handle debug info for i128 constants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133821 91177308-0d34-0410-b5e6-96231b3b80d8
8594d42
Revert unintentional check-in.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133822 91177308-0d34-0410-b5e6-96231b3b80d8
0f03782
Testcase for r133818
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133823 91177308-0d34-0410-b5e6-96231b3b80d8
56fc642
Hoist simple check above more complex checking to avoid unnecessary
overheads.  No functional change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133824 91177308-0d34-0410-b5e6-96231b3b80d8
2416da3
Shorten some ARM builtin names by removing unnecessary "neon" prefix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133825 91177308-0d34-0410-b5e6-96231b3b80d8
e9e0e3a
jpbonn Merge branch 'master' of github.com:milkymist/llvm-lm32 fc50420
Fix struct member's scope. Patch by Xi Wang.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133828 91177308-0d34-0410-b5e6-96231b3b80d8
fa3f9c0
Rafael Ávila de Espíndola Fix cmake build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133830 91177308-0d34-0410-b5e6-96231b3b80d8
1189027
Revert "Shorten some ARM builtin names by removing unnecessary "neon"…
… prefix."

Sorry, this was a bad idea.  Within clang these builtins are in a separate
"ARM" namespace, but the actual builtin names should clearly distinguish that
they are target specific.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133832 91177308-0d34-0410-b5e6-96231b3b80d8
9c99cfe
jpbonn Merge branch 'master' of http://llvm.org/git/llvm f2422ba
2  cmake/modules/LLVMLibDeps.cmake
@@ -44,7 +44,7 @@ set(MSVC_LIB_DEPS_LLVMMico32Info LLVMMC LLVMSupport)
44 44
 set(MSVC_LIB_DEPS_LLVMMipsCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMMipsInfo LLVMSelectionDAG LLVMSupport LLVMTarget)
45 45
 set(MSVC_LIB_DEPS_LLVMMipsInfo LLVMMC LLVMSupport)
46 46
 set(MSVC_LIB_DEPS_LLVMObject LLVMSupport)
47  
-set(MSVC_LIB_DEPS_LLVMPTXCodeGen LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMPTXInfo LLVMSelectionDAG LLVMSupport LLVMTarget)
  47
+set(MSVC_LIB_DEPS_LLVMPTXCodeGen LLVMAnalysis LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMPTXInfo LLVMSelectionDAG LLVMSupport LLVMTarget)
48 48
 set(MSVC_LIB_DEPS_LLVMPTXInfo LLVMMC LLVMSupport)
49 49
 set(MSVC_LIB_DEPS_LLVMPowerPCAsmPrinter LLVMMC LLVMSupport)
50 50
 set(MSVC_LIB_DEPS_LLVMPowerPCCodeGen LLVMAnalysis LLVMAsmPrinter LLVMCodeGen LLVMCore LLVMMC LLVMPowerPCAsmPrinter LLVMPowerPCInfo LLVMSelectionDAG LLVMSupport LLVMTarget)
3  include/llvm/Analysis/DIBuilder.h
@@ -135,6 +135,7 @@ namespace llvm {
135 135
                              unsigned Flags);
136 136
 
137 137
     /// createMemberType - Create debugging information entry for a member.
  138
+    /// @param Scope        Member scope.
138 139
     /// @param Name         Member name.
139 140
     /// @param File         File where this member is defined.
140 141
     /// @param LineNo       Line number.
@@ -143,7 +144,7 @@ namespace llvm {
143 144
     /// @param OffsetInBits Member offset.
144 145
     /// @param Flags        Flags to encode member attribute, e.g. private
145 146
     /// @param Ty           Parent type.
146  
-    DIType createMemberType(StringRef Name, DIFile File,
  147
+    DIType createMemberType(DIDescriptor Scope, StringRef Name, DIFile File,
147 148
                             unsigned LineNo, uint64_t SizeInBits, 
148 149
                             uint64_t AlignInBits, uint64_t OffsetInBits, 
149 150
                             unsigned Flags, DIType Ty);
5  include/llvm/CodeGen/MachineInstrBuilder.h
@@ -77,6 +77,11 @@ class MachineInstrBuilder {
77 77
     return *this;
78 78
   }
79 79
 
  80
+  const MachineInstrBuilder &addCImm(const ConstantInt *Val) const {
  81
+    MI->addOperand(MachineOperand::CreateCImm(Val));
  82
+    return *this;
  83
+  }
  84
+
80 85
   const MachineInstrBuilder &addFPImm(const ConstantFP *Val) const {
81 86
     MI->addOperand(MachineOperand::CreateFPImm(Val));
82 87
     return *this;
16  include/llvm/CodeGen/MachineOperand.h
@@ -21,6 +21,7 @@ namespace llvm {
21 21
 
22 22
 class BlockAddress;
23 23
 class ConstantFP;
  24
+class ConstantInt;
24 25
 class GlobalValue;
25 26
 class MachineBasicBlock;
26 27
 class MachineInstr;
@@ -38,6 +39,7 @@ class MachineOperand {
38 39
   enum MachineOperandType {
39 40
     MO_Register,               ///< Register operand.
40 41
     MO_Immediate,              ///< Immediate operand
  42
+    MO_CImmediate,             ///< Immediate >64bit operand
41 43
     MO_FPImmediate,            ///< Floating-point immediate operand
42 44
     MO_MachineBasicBlock,      ///< MachineBasicBlock reference
43 45
     MO_FrameIndex,             ///< Abstract Stack Frame Index
@@ -111,6 +113,7 @@ class MachineOperand {
111 113
   union {
112 114
     MachineBasicBlock *MBB;   // For MO_MachineBasicBlock.
113 115
     const ConstantFP *CFP;    // For MO_FPImmediate.
  116
+    const ConstantInt *CI;    // For MO_CImmediate. Integers > 64bit.
114 117
     int64_t ImmVal;           // For MO_Immediate.
115 118
     const MDNode *MD;         // For MO_Metadata.
116 119
     MCSymbol *Sym;            // For MO_MCSymbol
@@ -173,6 +176,8 @@ class MachineOperand {
173 176
   bool isReg() const { return OpKind == MO_Register; }
174 177
   /// isImm - Tests if this is a MO_Immediate operand.
175 178
   bool isImm() const { return OpKind == MO_Immediate; }
  179
+  /// isCImm - Test if t his is a MO_CImmediate operand.
  180
+  bool isCImm() const { return OpKind == MO_CImmediate; }
176 181
   /// isFPImm - Tests if this is a MO_FPImmediate operand.
177 182
   bool isFPImm() const { return OpKind == MO_FPImmediate; }
178 183
   /// isMBB - Tests if this is a MO_MachineBasicBlock operand.
@@ -333,6 +338,11 @@ class MachineOperand {
333 338
     return Contents.ImmVal;
334 339
   }
335 340
 
  341
+  const ConstantInt *getCImm() const {
  342
+    assert(isCImm() && "Wrong MachineOperand accessor");
  343
+    return Contents.CI;
  344
+  }
  345
+
336 346
   const ConstantFP *getFPImm() const {
337 347
     assert(isFPImm() && "Wrong MachineOperand accessor");
338 348
     return Contents.CFP;
@@ -440,6 +450,12 @@ class MachineOperand {
440 450
     return Op;
441 451
   }
442 452
 
  453
+  static MachineOperand CreateCImm(const ConstantInt *CI) {
  454
+    MachineOperand Op(MachineOperand::MO_CImmediate);
  455
+    Op.Contents.CI = CI;
  456
+    return Op;
  457
+  }
  458
+
443 459
   static MachineOperand CreateFPImm(const ConstantFP *CFP) {
444 460
     MachineOperand Op(MachineOperand::MO_FPImmediate);
445 461
     Op.Contents.CFP = CFP;
4  lib/Analysis/DIBuilder.cpp
@@ -219,7 +219,7 @@ DIType DIBuilder::createInheritance(DIType Ty, DIType BaseTy,
219 219
 }
220 220
 
221 221
 /// createMemberType - Create debugging information entry for a member.
222  
-DIType DIBuilder::createMemberType(StringRef Name, 
  222
+DIType DIBuilder::createMemberType(DIDescriptor Scope, StringRef Name, 
223 223
                                    DIFile File, unsigned LineNumber, 
224 224
                                    uint64_t SizeInBits, uint64_t AlignInBits,
225 225
                                    uint64_t OffsetInBits, unsigned Flags, 
@@ -227,7 +227,7 @@ DIType DIBuilder::createMemberType(StringRef Name,
227 227
   // TAG_member is encoded in DIDerivedType format.
228 228
   Value *Elts[] = {
229 229
     GetTagConstant(VMContext, dwarf::DW_TAG_member),
230  
-    File, // Or TheCU ? Ty ?
  230
+    Scope,
231 231
     MDString::get(VMContext, Name),
232 232
     File,
233 233
     ConstantInt::get(Type::getInt32Ty(VMContext), LineNumber),
2  lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -575,6 +575,8 @@ static bool EmitDebugValueComment(const MachineInstr *MI, AsmPrinter &AP) {
575 575
     }
576 576
   } else if (MI->getOperand(0).isImm()) {
577 577
     OS << MI->getOperand(0).getImm();
  578
+  } else if (MI->getOperand(0).isCImm()) {
  579
+    MI->getOperand(0).getCImm()->getValue().print(OS, false /*isSigned*/);
578 580
   } else {
579 581
     assert(MI->getOperand(0).isReg() && "Unknown operand type");
580 582
     if (MI->getOperand(0).getReg() == 0) {
2  lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
@@ -491,7 +491,7 @@ bool CompileUnit::addConstantFPValue(DIE *Die, const MachineOperand &MO) {
491 491
 }
492 492
 
493 493
 /// addConstantValue - Add constant value entry in variable DIE.
494  
-bool CompileUnit::addConstantValue(DIE *Die, ConstantInt *CI,
  494
+bool CompileUnit::addConstantValue(DIE *Die, const ConstantInt *CI,
495 495
                                    bool Unsigned) {
496 496
   unsigned CIBitWidth = CI->getBitWidth();
497 497
   if (CIBitWidth <= 64) {
2  lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
@@ -181,7 +181,7 @@ class CompileUnit {
181 181
 
182 182
   /// addConstantValue - Add constant value entry in variable DIE.
183 183
   bool addConstantValue(DIE *Die, const MachineOperand &MO, DIType Ty);
184  
-  bool addConstantValue(DIE *Die, ConstantInt *CI, bool Unsigned);
  184
+  bool addConstantValue(DIE *Die, const ConstantInt *CI, bool Unsigned);
185 185
 
186 186
   /// addConstantFPValue - Add constant value entry in variable DIE.
187 187
   bool addConstantFPValue(DIE *Die, const MachineOperand &MO);
38  lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -618,6 +618,21 @@ DIE *DwarfDebug::constructInlinedScopeDIE(DbgScope *Scope) {
618 618
   return ScopeDIE;
619 619
 }
620 620
 
  621
+/// isUnsignedDIType - Return true if type encoding is unsigned.
  622
+static bool isUnsignedDIType(DIType Ty) {
  623
+  DIDerivedType DTy(Ty);
  624
+  if (DTy.Verify())
  625
+    return isUnsignedDIType(DTy.getTypeDerivedFrom());
  626
+
  627
+  DIBasicType BTy(Ty);
  628
+  if (BTy.Verify()) {
  629
+    unsigned Encoding = BTy.getEncoding();
  630
+    if (Encoding == dwarf::DW_ATE_unsigned ||
  631
+        Encoding == dwarf::DW_ATE_unsigned_char)
  632
+      return true;
  633
+  }
  634
+  return false;
  635
+}
621 636
 
622 637
 /// constructVariableDIE - Construct a DIE for the given DbgVariable.
623 638
 DIE *DwarfDebug::constructVariableDIE(DbgVariable *DV, DbgScope *Scope) {
@@ -718,6 +733,11 @@ DIE *DwarfDebug::constructVariableDIE(DbgVariable *DV, DbgScope *Scope) {
718 733
       else if (DVInsn->getOperand(0).isFPImm())
719 734
         updated =
720 735
           VariableCU->addConstantFPValue(VariableDie, DVInsn->getOperand(0));
  736
+      else if (DVInsn->getOperand(0).isCImm())
  737
+        updated =
  738
+          VariableCU->addConstantValue(VariableDie, 
  739
+                                       DVInsn->getOperand(0).getCImm(),
  740
+                                       isUnsignedDIType(DV->getType()));
721 741
     } else {
722 742
       VariableCU->addVariableAddress(DV, VariableDie, 
723 743
                                      Asm->getDebugValueLocation(DVInsn));
@@ -913,22 +933,6 @@ CompileUnit *DwarfDebug::getCompileUnit(const MDNode *N) const {
913 933
   return I->second;
914 934
 }
915 935
 
916  
-/// isUnsignedDIType - Return true if type encoding is unsigned.
917  
-static bool isUnsignedDIType(DIType Ty) {
918  
-  DIDerivedType DTy(Ty);
919  
-  if (DTy.Verify())
920  
-    return isUnsignedDIType(DTy.getTypeDerivedFrom());
921  
-
922  
-  DIBasicType BTy(Ty);
923  
-  if (BTy.Verify()) {
924  
-    unsigned Encoding = BTy.getEncoding();
925  
-    if (Encoding == dwarf::DW_ATE_unsigned ||
926  
-        Encoding == dwarf::DW_ATE_unsigned_char)
927  
-      return true;
928  
-  }
929  
-  return false;
930  
-}
931  
-
932 936
 // Return const exprssion if value is a GEP to access merged global
933 937
 // constant. e.g.
934 938
 // i8* getelementptr ({ i8, i8, i8, i8 }* @_MergedGlobals, i32 0, i32 0)
@@ -1017,7 +1021,7 @@ void DwarfDebug::constructGlobalVariableDIE(const MDNode *N) {
1017 1021
     } else {
1018 1022
       TheCU->addBlock(VariableDIE, dwarf::DW_AT_location, 0, Block);
1019 1023
     } 
1020  
-  } else if (ConstantInt *CI = 
  1024
+  } else if (const ConstantInt *CI = 
1021 1025
              dyn_cast_or_null<ConstantInt>(GV.getConstant()))
1022 1026
     TheCU->addConstantValue(VariableDIE, CI, isUnsignedDIType(GTy));
1023 1027
   else if (const ConstantExpr *CE = getMergedGlobalExpr(N->getOperand(11))) {
3  lib/CodeGen/MachineInstr.cpp
@@ -267,6 +267,9 @@ void MachineOperand::print(raw_ostream &OS, const TargetMachine *TM) const {
267 267
   case MachineOperand::MO_Immediate:
268 268
     OS << getImm();
269 269
     break;
  270
+  case MachineOperand::MO_CImmediate:
  271
+    getCImm()->getValue().print(OS, false);
  272
+    break;
270 273
   case MachineOperand::MO_FPImmediate:
271 274
     if (getFPImm()->getType()->isFloatTy())
272 275
       OS << getFPImm()->getValueAPF().convertToFloat();
11  lib/CodeGen/SelectionDAG/FastISel.cpp
@@ -556,9 +556,14 @@ bool FastISel::SelectCall(const User *I) {
556 556
         .addReg(0U).addImm(DI->getOffset())
557 557
         .addMetadata(DI->getVariable());
558 558
     } else if (const ConstantInt *CI = dyn_cast<ConstantInt>(V)) {
559  
-      BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, II)
560  
-        .addImm(CI->getZExtValue()).addImm(DI->getOffset())
561  
-        .addMetadata(DI->getVariable());
  559
+      if (CI->getBitWidth() > 64)
  560
+        BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, II)
  561
+          .addCImm(CI).addImm(DI->getOffset())
  562
+          .addMetadata(DI->getVariable());
  563
+      else 
  564
+        BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, II)
  565
+          .addImm(CI->getZExtValue()).addImm(DI->getOffset())
  566
+          .addMetadata(DI->getVariable());
562 567
     } else if (const ConstantFP *CF = dyn_cast<ConstantFP>(V)) {
563 568
       BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, II)
564 569
         .addFPImm(CF).addImm(DI->getOffset())
8  lib/CodeGen/SelectionDAG/InstrEmitter.cpp
@@ -616,12 +616,8 @@ InstrEmitter::EmitDbgValue(SDDbgValue *SD,
616 616
   } else if (SD->getKind() == SDDbgValue::CONST) {
617 617
     const Value *V = SD->getConst();
618 618
     if (const ConstantInt *CI = dyn_cast<ConstantInt>(V)) {
619  
-      // FIXME: SDDbgValue constants aren't updated with legalization, so it's 
620  
-      // possible to have i128 constants in them at this point. Dwarf writer
621  
-      // does not handle i128 constants at the moment so, as a crude workaround,
622  
-      // just drop the debug info if this happens.
623  
-      if (!CI->getValue().isSignedIntN(64))
624  
-        MIB.addReg(0U);
  619
+      if (CI->getBitWidth() > 64)
  620
+        MIB.addCImm(CI);
625 621
       else
626 622
         MIB.addImm(CI->getSExtValue());
627 623
     } else if (const ConstantFP *CF = dyn_cast<ConstantFP>(V)) {
10  lib/Target/X86/X86ISelLowering.cpp
@@ -2556,6 +2556,11 @@ X86TargetLowering::IsEligibleForTailCallOptimization(SDValue Callee,
2556 2556
   if (isCalleeStructRet || isCallerStructRet)
2557 2557
     return false;
2558 2558
 
  2559
+  // An stdcall caller is expected to clean up its arguments; the callee
  2560
+  // isn't going to do that.
  2561
+  if (!CCMatch && CallerCC==CallingConv::X86_StdCall)
  2562
+    return false;
  2563
+
2559 2564
   // Do not sibcall optimize vararg calls unless all arguments are passed via
2560 2565
   // registers.
2561 2566
   if (isVarArg && !Outs.empty()) {
@@ -2692,11 +2697,6 @@ X86TargetLowering::IsEligibleForTailCallOptimization(SDValue Callee,
2692 2697
     }
2693 2698
   }
2694 2699
 
2695  
-  // An stdcall caller is expected to clean up its arguments; the callee
2696  
-  // isn't going to do that.
2697  
-  if (!CCMatch && CallerCC==CallingConv::X86_StdCall)
2698  
-    return false;
2699  
-
2700 2700
   return true;
2701 2701
 }
2702 2702
 
1  lib/Target/XCore/CMakeLists.txt
... ...
@@ -1,5 +1,6 @@
1 1
 set(LLVM_TARGET_DEFINITIONS XCore.td)
2 2
 
  3
+tablegen(XCoreGenRegisterNames.inc -gen-register-enums)
3 4
 tablegen(XCoreGenRegisterDesc.inc -gen-register-desc)
4 5
 tablegen(XCoreGenRegisterInfo.h.inc -gen-register-info-header)
5 6
 tablegen(XCoreGenRegisterInfo.inc -gen-register-info)
25  test/CodeGen/Generic/legalize-dbg-value.ll
... ...
@@ -1,25 +0,0 @@
1  
-; RUN: llc < %s -o /dev/null
2  
-
3  
-; llvm.dbg.value instructions can have types which are not legal for the
4  
-; target. CodeGen should handle this.
5  
-
6  
-define i128 @__mulvti3(i128 %a, i128 %b) nounwind {
7  
-entry:
8  
-  tail call void @llvm.dbg.value(metadata !0, i64 0, metadata !1), !dbg !11
9  
-  unreachable
10  
-}
11  
-
12  
-declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
13  
-
14  
-!0 = metadata !{i128 170141183460469231731687303715884105727} 
15  
-!1 = metadata !{i32 524544, metadata !2, metadata !"MAX", metadata !4, i32 29, metadata !8} ; [ DW_TAG_auto_variable ]
16  
-!2 = metadata !{i32 524299, metadata !3, i32 26, i32 0} ; [ DW_TAG_lexical_block ]
17  
-!3 = metadata !{i32 524334, i32 0, metadata !4, metadata !"__mulvti3", metadata !"__mulvti3", metadata !"__mulvti3", metadata !4, i32 26, metadata !6, i1 false, i1 true, i32 0, i32 0, null, i1 false} ; [ DW_TAG_subprogram ]
18  
-!4 = metadata !{i32 524329, metadata !"mulvti3.c", metadata !"/Volumes/Sandbox/llvm/swb/Libcompiler_rt-6.roots/Libcompiler_rt-6/lib", metadata !5} ; [ DW_TAG_file_type ]
19  
-!5 = metadata !{i32 524305, i32 0, i32 1, metadata !"mulvti3.c", metadata !"/Volumes/Sandbox/llvm/swb/Libcompiler_rt-6.roots/Libcompiler_rt-6/lib", metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2328)", i1 true, i1 true, metadata !"", i32 0} ; [ DW_TAG_compile_unit ]
20  
-!6 = metadata !{i32 524309, metadata !4, metadata !"", metadata !4, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !7, i32 0, null} ; [ DW_TAG_subroutine_type ]
21  
-!7 = metadata !{metadata !8, metadata !8, metadata !8}
22  
-!8 = metadata !{i32 524310, metadata !4, metadata !"ti_int", metadata !9, i32 78, i64 0, i64 0, i64 0, i32 0, metadata !10} ; [ DW_TAG_typedef ]
23  
-!9 = metadata !{i32 524329, metadata !"int_lib.h", metadata !"/Volumes/Sandbox/llvm/swb/Libcompiler_rt-6.roots/Libcompiler_rt-6/lib", metadata !5} ; [ DW_TAG_file_type ]
24  
-!10 = metadata !{i32 524324, metadata !4, metadata !"", metadata !4, i32 0, i64 128, i64 128, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
25  
-!11 = metadata !{i32 29, i32 0, metadata !2, null}
26  test/CodeGen/X86/dbg-i128-const.ll
... ...
@@ -0,0 +1,26 @@
  1
+; RUN: llc < %s | FileCheck %s
  2
+
  3
+; CHECK: DW_AT_const_value
  4
+; CHECK-NEXT: 42
  5
+
  6
+define i128 @__foo(i128 %a, i128 %b) nounwind {
  7
+entry:
  8
+  tail call void @llvm.dbg.value(metadata !0, i64 0, metadata !1), !dbg !11
  9
+  %add = add i128 %a, %b, !dbg !11
  10
+  ret i128 %add, !dbg !11
  11
+}
  12
+
  13
+declare void @llvm.dbg.value(metadata, i64, metadata) nounwind readnone
  14
+
  15
+!0 = metadata !{i128 42 }
  16
+!1 = metadata !{i32 524544, metadata !2, metadata !"MAX", metadata !4, i32 29, metadata !8} ; [ DW_TAG_auto_variable ]
  17
+!2 = metadata !{i32 524299, metadata !3, i32 26, i32 0} ; [ DW_TAG_lexical_block ]
  18
+!3 = metadata !{i32 524334, i32 0, metadata !4, metadata !"__foo", metadata !"__foo", metadata !"__foo", metadata !4, i32 26, metadata !6, i1 false, i1 true, i32 0, i32 0, null, i1 false} ; [ DW_TAG_subprogram ]
  19
+!4 = metadata !{i32 524329, metadata !"foo.c", metadata !"/tmp", metadata !5} ; [ DW_TAG_file_type ]
  20
+!5 = metadata !{i32 524305, i32 0, i32 1, metadata !"foo.c", metadata !"/tmp", metadata !"clang", i1 true, i1 true, metadata !"", i32 0} ; [ DW_TAG_compile_unit ]
  21
+!6 = metadata !{i32 524309, metadata !4, metadata !"", metadata !4, i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !7, i32 0, null} ; [ DW_TAG_subroutine_type ]
  22
+!7 = metadata !{metadata !8, metadata !8, metadata !8}
  23
+!8 = metadata !{i32 524310, metadata !4, metadata !"ti_int", metadata !9, i32 78, i64 0, i64 0, i64 0, i32 0, metadata !10} ; [ DW_TAG_typedef ]
  24
+!9 = metadata !{i32 524329, metadata !"myint.h", metadata !"/tmp", metadata !5} ; [ DW_TAG_file_type ]
  25
+!10 = metadata !{i32 524324, metadata !4, metadata !"", metadata !4, i32 0, i64 128, i64 128, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
  26
+!11 = metadata !{i32 29, i32 0, metadata !2, null}
17  test/MC/MachO/thumb2-movt-fixup.s
... ...
@@ -0,0 +1,17 @@
  1
+@ RUN: llvm-mc -mcpu=cortex-a8 -triple thumbv7-apple-darwin10 -filetype=obj -o - < %s | macho-dump | FileCheck %s
  2
+
  3
+_fred:
  4
+	movt	r3, :upper16:(_wilma-(LPC0_0+4))
  5
+LPC0_0:
  6
+
  7
+_wilma:
  8
+  .long 0
  9
+
  10
+@ CHECK:  ('_relocations', [
  11
+@ CHECK:    # Relocation 0
  12
+@ CHECK:    (('word-0', 0xb9000000),
  13
+@ CHECK:     ('word-1', 0x4)),
  14
+@ CHECK:    # Relocation 1
  15
+@ CHECK:    (('word-0', 0xb100fffc),
  16
+@ CHECK:     ('word-1', 0x4)),
  17
+

No commit comments for this range

Something went wrong with that request. Please try again.