From c950114021ca04e064495178ddf2c3dba61461a3 Mon Sep 17 00:00:00 2001 From: Keno Fischer Date: Thu, 7 Jan 2016 22:39:11 +0000 Subject: [PATCH] Temporarily revert r257105 "[Verifier] Check that debug values have proper size" Looks like there's a case where clang generates debug info that triggers the new verifier check. Reverting while investigating. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@257107 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/StackColoring.cpp | 16 +- lib/IR/Verifier.cpp | 64 +---- test/CodeGen/ARM/2010-08-04-StackVariable.ll | 11 +- .../MIR/X86/invalid-metadata-node-type.mir | 2 +- .../MIR/X86/stack-object-debug-info.mir | 7 +- test/CodeGen/X86/2012-11-30-regpres-dbg.ll | 2 +- test/CodeGen/X86/MachineSink-DbgValue.ll | 4 +- .../X86/dbg-changes-codegen-branch-folding.ll | 252 +++++++++--------- test/CodeGen/X86/fpstack-debuginstr-kill.ll | 2 +- .../X86/misched-code-difference-with-debug.ll | 4 +- test/DebugInfo/AArch64/frameindices.ll | 2 +- .../DebugInfo/Generic/2010-05-03-OriginDIE.ll | 4 +- .../Generic/incorrect-variable-debugloc1.ll | 3 +- .../Generic/two-cus-from-same-file.ll | 9 +- test/DebugInfo/Mips/dsr-non-fixed-objects.ll | 2 +- test/DebugInfo/X86/bbjoin.ll | 6 +- test/DebugInfo/X86/dbg-value-dag-combine.ll | 4 +- test/DebugInfo/X86/dbg-value-isel.ll | 2 +- test/DebugInfo/X86/dbg-value-terminator.ll | 3 +- test/DebugInfo/X86/elf-names.ll | 2 +- test/DebugInfo/X86/nodebug_with_debug_loc.ll | 4 +- test/DebugInfo/X86/nophysreg.ll | 10 +- test/DebugInfo/X86/rvalue-ref.ll | 2 +- test/DebugInfo/X86/sret.ll | 2 +- .../CodeGenPrepare/X86/catchpad-phi-cast.ll | 2 +- .../DeadStoreElimination/inst-limits.ll | 2 +- .../SLPVectorizer/X86/debug_info.ll | 4 +- 27 files changed, 181 insertions(+), 246 deletions(-) diff --git a/lib/CodeGen/StackColoring.cpp b/lib/CodeGen/StackColoring.cpp index 505d6fd8896..3541b33a844 100644 --- a/lib/CodeGen/StackColoring.cpp +++ b/lib/CodeGen/StackColoring.cpp @@ -21,6 +21,7 @@ // //===----------------------------------------------------------------------===// +#include "llvm/CodeGen/Passes.h" #include "llvm/ADT/BitVector.h" #include "llvm/ADT/DepthFirstIterator.h" #include "llvm/ADT/PostOrderIterator.h" @@ -39,7 +40,6 @@ #include "llvm/CodeGen/MachineMemOperand.h" #include "llvm/CodeGen/MachineModuleInfo.h" #include "llvm/CodeGen/MachineRegisterInfo.h" -#include "llvm/CodeGen/Passes.h" #include "llvm/CodeGen/PseudoSourceValue.h" #include "llvm/CodeGen/SlotIndexes.h" #include "llvm/CodeGen/StackProtector.h" @@ -47,7 +47,6 @@ #include "llvm/IR/Dominators.h" #include "llvm/IR/Function.h" #include "llvm/IR/Instructions.h" -#include "llvm/IR/IntrinsicInst.h" #include "llvm/IR/Module.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" @@ -495,21 +494,10 @@ void StackColoring::remapInstructions(DenseMap &SlotRemap) { // upcoming replacement. SP->adjustForColoring(From, To); - // The new alloca might not be valid in a llvm.dbg.declare for this - // variable, so undef out the use to make the verifier happy. - AllocaInst *FromAI = const_cast(From); - if (FromAI->isUsedByMetadata()) - ValueAsMetadata::handleRAUW(FromAI, UndefValue::get(FromAI->getType())); - for (auto &Use : FromAI->uses()) { - if (BitCastInst *BCI = dyn_cast(Use.get())) - if (BCI->isUsedByMetadata()) - ValueAsMetadata::handleRAUW(BCI, UndefValue::get(BCI->getType())); - } - // Note that this will not replace uses in MMOs (which we'll update below), // or anywhere else (which is why we won't delete the original // instruction). - FromAI->replaceAllUsesWith(Inst); + const_cast(From)->replaceAllUsesWith(Inst); } // Remap all instructions to the new stack slots. diff --git a/lib/IR/Verifier.cpp b/lib/IR/Verifier.cpp index 165f745b506..64d7575b8a1 100644 --- a/lib/IR/Verifier.cpp +++ b/lib/IR/Verifier.cpp @@ -432,7 +432,8 @@ private: // Module-level debug info verification... void verifyTypeRefs(); template - void verifyDIExpression(const DbgInfoIntrinsic &I, const MapTy &TypeRefs); + void verifyBitPieceExpression(const DbgInfoIntrinsic &I, + const MapTy &TypeRefs); void visitUnresolvedTypeRef(const MDString *S, const MDNode *N); }; } // End anonymous namespace @@ -3853,34 +3854,15 @@ static uint64_t getVariableSize(const DILocalVariable &V, const MapTy &Map) { } template -void Verifier::verifyDIExpression(const DbgInfoIntrinsic &I, - const MapTy &TypeRefs) { +void Verifier::verifyBitPieceExpression(const DbgInfoIntrinsic &I, + const MapTy &TypeRefs) { DILocalVariable *V; DIExpression *E; - const Value *Arg; - uint64_t ArgumentTypeSizeInBits = 0; if (auto *DVI = dyn_cast(&I)) { - Arg = DVI->getValue(); - if (Arg) - ArgumentTypeSizeInBits = - M->getDataLayout().getTypeAllocSizeInBits(Arg->getType()); V = dyn_cast_or_null(DVI->getRawVariable()); E = dyn_cast_or_null(DVI->getRawExpression()); } else { auto *DDI = cast(&I); - // For declare intrinsics, get the total size of the alloca, to allow - // case where the variable may span more than one element. - Arg = DDI->getAddress(); - if (Arg) - Arg = Arg->stripPointerCasts(); - const AllocaInst *AI = dyn_cast_or_null(Arg); - if (AI) { - // We can only say something about constant size allocations - if (const ConstantInt *CI = dyn_cast(AI->getArraySize())) - ArgumentTypeSizeInBits = - CI->getLimitedValue() * - M->getDataLayout().getTypeAllocSizeInBits(AI->getAllocatedType()); - } V = dyn_cast_or_null(DDI->getRawVariable()); E = dyn_cast_or_null(DDI->getRawExpression()); } @@ -3889,6 +3871,10 @@ void Verifier::verifyDIExpression(const DbgInfoIntrinsic &I, if (!V || !E || !E->isValid()) return; + // Nothing to do if this isn't a bit piece expression. + if (!E->isBitPiece()) + return; + // The frontend helps out GDB by emitting the members of local anonymous // unions as artificial local variables with shared storage. When SROA splits // the storage for artificial local variables that are smaller than the entire @@ -3904,33 +3890,11 @@ void Verifier::verifyDIExpression(const DbgInfoIntrinsic &I, if (!VarSize) return; - if (E->isBitPiece()) { - unsigned PieceSize = E->getBitPieceSize(); - unsigned PieceOffset = E->getBitPieceOffset(); - Assert(PieceSize + PieceOffset <= VarSize, - "piece is larger than or outside of variable", &I, V, E); - Assert(PieceSize != VarSize, "piece covers entire variable", &I, V, E); - return; - } - - if (!ArgumentTypeSizeInBits) - return; // We were unable to determine the size of the argument - - if (E->getNumElements() == 0) { - // In the case where the expression is empty, verify the size of the - // argument. Doing this in the general case would require looking through - // any dereferences that may be in the expression. - Assert(ArgumentTypeSizeInBits == VarSize, - "size of passed value (" + std::to_string(ArgumentTypeSizeInBits) + - ") does not match size of declared variable (" + - std::to_string(VarSize) + ")", - &I, Arg, V, V->getType(), E); - } else if (E->getElement(0) == dwarf::DW_OP_deref) { - Assert(ArgumentTypeSizeInBits == M->getDataLayout().getPointerSizeInBits(), - "the operation of the expression is a deref, but the passed value " - "is not pointer sized", - &I, Arg, V, V->getType(), E); - } + unsigned PieceSize = E->getBitPieceSize(); + unsigned PieceOffset = E->getBitPieceOffset(); + Assert(PieceSize + PieceOffset <= VarSize, + "piece is larger than or outside of variable", &I, V, E); + Assert(PieceSize != VarSize, "piece covers entire variable", &I, V, E); } void Verifier::visitUnresolvedTypeRef(const MDString *S, const MDNode *N) { @@ -3963,7 +3927,7 @@ void Verifier::verifyTypeRefs() { for (const BasicBlock &BB : F) for (const Instruction &I : BB) if (auto *DII = dyn_cast(&I)) - verifyDIExpression(*DII, TypeRefs); + verifyBitPieceExpression(*DII, TypeRefs); // Return early if all typerefs were resolved. if (UnresolvedTypeRefs.empty()) diff --git a/test/CodeGen/ARM/2010-08-04-StackVariable.ll b/test/CodeGen/ARM/2010-08-04-StackVariable.ll index 9055b2b551e..14ddb59b538 100644 --- a/test/CodeGen/ARM/2010-08-04-StackVariable.ll +++ b/test/CodeGen/ARM/2010-08-04-StackVariable.ll @@ -1,9 +1,6 @@ ; RUN: llc -O0 -mtriple=arm-apple-darwin < %s | grep DW_OP_breg ; Use DW_OP_breg in variable's location expression if the variable is in a stack slot. -target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:64" -target triple = "arm-apple-darwin" - %struct.SVal = type { i8*, i32 } define i32 @_Z3fooi4SVal(i32 %i, %struct.SVal* noalias %location) nounwind ssp !dbg !17 { @@ -81,7 +78,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon !llvm.module.flags = !{!49} !0 = !DISubprogram(name: "SVal", line: 11, isLocal: false, isDefinition: false, virtualIndex: 6, isOptimized: false, file: !48, scope: !1, type: !14) -!1 = !DICompositeType(tag: DW_TAG_structure_type, name: "SVal", line: 1, size: 64, align: 64, file: !48, elements: !4) +!1 = !DICompositeType(tag: DW_TAG_structure_type, name: "SVal", line: 1, size: 128, align: 64, file: !48, elements: !4) !2 = !DIFile(filename: "small.cc", directory: "/Users/manav/R8248330") !3 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", isOptimized: false, emissionKind: 1, file: !48, enums: !47, retainedTypes: !47, subprograms: !46, globals: !47, imports: !47) !4 = !{!5, !7, !0, !9} @@ -106,14 +103,14 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon !23 = !DILocalVariable(name: "i", line: 16, arg: 1, scope: !17, file: !2, type: !13) !24 = !DILocation(line: 16, scope: !17) !25 = !DILocalVariable(name: "location", line: 16, arg: 2, scope: !17, file: !2, type: !26) -!26 = !DIDerivedType(tag: DW_TAG_reference_type, name: "SVal", size: 32, align: 32, file: !48, scope: !2, baseType: !1) +!26 = !DIDerivedType(tag: DW_TAG_reference_type, name: "SVal", size: 64, align: 64, file: !48, scope: !2, baseType: !1) !27 = !DILocation(line: 17, scope: !28) !28 = distinct !DILexicalBlock(line: 16, column: 0, file: !2, scope: !17) !29 = !DILocation(line: 18, scope: !28) !30 = !DILocation(line: 20, scope: !28) !31 = !DILocalVariable(name: "this", line: 11, arg: 1, scope: !16, file: !2, type: !32) -!32 = !DIDerivedType(tag: DW_TAG_const_type, flags: DIFlagArtificial, file: !48, scope: !2, baseType: !33) -!33 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, file: !48, scope: !2, baseType: !1) +!32 = !DIDerivedType(tag: DW_TAG_const_type, size: 64, align: 64, flags: DIFlagArtificial, file: !48, scope: !2, baseType: !33) +!33 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, file: !48, scope: !2, baseType: !1) !34 = !DILocation(line: 11, scope: !16) !35 = !DILocation(line: 11, scope: !36) !36 = distinct !DILexicalBlock(line: 11, column: 0, file: !48, scope: !37) diff --git a/test/CodeGen/MIR/X86/invalid-metadata-node-type.mir b/test/CodeGen/MIR/X86/invalid-metadata-node-type.mir index 47f41b2afb8..a6c2e509da0 100644 --- a/test/CodeGen/MIR/X86/invalid-metadata-node-type.mir +++ b/test/CodeGen/MIR/X86/invalid-metadata-node-type.mir @@ -6,7 +6,7 @@ entry: %x.i = alloca i8, align 1 %y.i = alloca [256 x i8], align 16 - %0 = bitcast i8* %x.i to i8* + %0 = bitcast [256 x i8]* %y.i to i8* br label %for.body for.body: diff --git a/test/CodeGen/MIR/X86/stack-object-debug-info.mir b/test/CodeGen/MIR/X86/stack-object-debug-info.mir index 8074f7603b7..509b196416f 100644 --- a/test/CodeGen/MIR/X86/stack-object-debug-info.mir +++ b/test/CodeGen/MIR/X86/stack-object-debug-info.mir @@ -35,14 +35,11 @@ !1 = !DIFile(filename: "t.c", directory: "") !2 = !{} !3 = !{i32 1, !"Debug Info Version", i32 3} - !4 = !DILocalVariable(name: "x", scope: !5, file: !1, line: 16, type: !9) + !4 = !DILocalVariable(name: "x", scope: !5, file: !1, line: 16, type: !6) !5 = distinct !DISubprogram(scope: null, isLocal: false, isDefinition: true, isOptimized: false) !6 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char) !7 = !DIExpression() !8 = !DILocation(line: 0, scope: !5) - !9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !6, size: 2048, align: 8, elements: !10) - !10 = !{!11} - !11 = !DISubrange(count: 256) ... --- name: foo @@ -53,7 +50,7 @@ frameInfo: # CHECK-LABEL: foo # CHECK: stack: # CHECK: - { id: 0, name: y.i, offset: 0, size: 256, alignment: 16, di-variable: '!4', -# CHECK-NEXT: di-expression: '!10', di-location: '!11' } +# CHECK-NEXT: di-expression: '!7', di-location: '!8' } stack: - { id: 0, name: y.i, offset: 0, size: 256, alignment: 16, di-variable: '!4', di-expression: '!7', di-location: '!8' } diff --git a/test/CodeGen/X86/2012-11-30-regpres-dbg.ll b/test/CodeGen/X86/2012-11-30-regpres-dbg.ll index de258c55f61..3f7a10ae035 100644 --- a/test/CodeGen/X86/2012-11-30-regpres-dbg.ll +++ b/test/CodeGen/X86/2012-11-30-regpres-dbg.ll @@ -40,7 +40,7 @@ invoke.cont44: ; preds = %if.end !1 = !{!2} !2 = distinct !DISubprogram(name: "test", isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 1, file: !6, scope: !5, type: !7) !3 = !DILocalVariable(name: "callback", line: 214, scope: !2, type: !4) -!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "btCompoundLeafCallback", line: 90, size: 64, align: 64, file: !6) +!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "btCompoundLeafCallback", line: 90, size: 512, align: 64, file: !6) !5 = !DIFile(filename: "MultiSource/Benchmarks/Bullet/btCompoundCollisionAlgorithm.cpp", directory: "MultiSource/Benchmarks/Bullet") !6 = !DIFile(filename: "MultiSource/Benchmarks/Bullet/btCompoundCollisionAlgorithm.cpp", directory: "MultiSource/Benchmarks/Bullet") !7 = !DISubroutineType(types: !9) diff --git a/test/CodeGen/X86/MachineSink-DbgValue.ll b/test/CodeGen/X86/MachineSink-DbgValue.ll index 57d1ac0c9db..457d9beb37d 100644 --- a/test/CodeGen/X86/MachineSink-DbgValue.ll +++ b/test/CodeGen/X86/MachineSink-DbgValue.ll @@ -36,9 +36,9 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon !5 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !6 = !DILocalVariable(name: "i", line: 2, arg: 1, scope: !1, file: !2, type: !5) !7 = !DILocalVariable(name: "c", line: 2, arg: 2, scope: !1, file: !2, type: !8) -!8 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, scope: !0, baseType: !5) +!8 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, scope: !0, baseType: !9) !9 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char) -!10 = !DILocalVariable(name: "a", line: 3, scope: !11, file: !2, type: !5) +!10 = !DILocalVariable(name: "a", line: 3, scope: !11, file: !2, type: !9) !11 = distinct !DILexicalBlock(line: 2, column: 25, file: !20, scope: !1) !12 = !DILocation(line: 2, column: 13, scope: !1) !13 = !DILocation(line: 2, column: 22, scope: !1) diff --git a/test/CodeGen/X86/dbg-changes-codegen-branch-folding.ll b/test/CodeGen/X86/dbg-changes-codegen-branch-folding.ll index 24d7e895a45..54bd4892683 100644 --- a/test/CodeGen/X86/dbg-changes-codegen-branch-folding.ll +++ b/test/CodeGen/X86/dbg-changes-codegen-branch-folding.ll @@ -12,7 +12,7 @@ ; CHECK: je .LBB0_4 ; Regenerate test with this command: -; clang++ -emit-llvm -S -O2 -g +; clang -emit-llvm -S -O2 -g ; from this source: ; ; extern void foo(char *dst,unsigned siz,const char *src); @@ -44,171 +44,161 @@ %struct.AAA3 = type { [4 x i8] } @.str = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 -@.str.1 = private unnamed_addr constant [2 x i8] c"+\00", align 1 -@.str.2 = private unnamed_addr constant [2 x i8] c"-\00", align 1 +@.str1 = private unnamed_addr constant [2 x i8] c"+\00", align 1 +@.str2 = private unnamed_addr constant [2 x i8] c"-\00", align 1 ; Function Attrs: uwtable define void @_Z3barii(i32 %param1, i32 %param2) #0 !dbg !24 { entry: %var1 = alloca %struct.AAA3, align 1 %var2 = alloca %struct.AAA3, align 1 - tail call void @llvm.dbg.value(metadata i32 %param1, i64 0, metadata !29, metadata !46), !dbg !47 - tail call void @llvm.dbg.value(metadata i32 %param2, i64 0, metadata !30, metadata !46), !dbg !48 - tail call void @llvm.dbg.value(metadata i8* null, i64 0, metadata !31, metadata !46), !dbg !49 + tail call void @llvm.dbg.value(metadata i32 %param1, i64 0, metadata !30, metadata !DIExpression()), !dbg !47 + tail call void @llvm.dbg.value(metadata i32 %param2, i64 0, metadata !31, metadata !DIExpression()), !dbg !47 + tail call void @llvm.dbg.value(metadata i8* null, i64 0, metadata !32, metadata !DIExpression()), !dbg !49 %tobool = icmp eq i32 %param2, 0, !dbg !50 - br i1 %tobool, label %if.end, label %if.then, !dbg !52 + br i1 %tobool, label %if.end, label %if.then, !dbg !50 if.then: ; preds = %entry - %call = tail call i8* @_Z5i2stri(i32 %param2), !dbg !53 - tail call void @llvm.dbg.value(metadata i8* %call, i64 0, metadata !31, metadata !46), !dbg !49 - br label %if.end, !dbg !55 + %call = tail call i8* @_Z5i2stri(i32 %param2), !dbg !52 + tail call void @llvm.dbg.value(metadata i8* %call, i64 0, metadata !32, metadata !DIExpression()), !dbg !49 + br label %if.end, !dbg !54 if.end: ; preds = %entry, %if.then - %0 = getelementptr inbounds %struct.AAA3, %struct.AAA3* %var1, i64 0, i32 0, i64 0, !dbg !56 - call void @llvm.lifetime.start(i64 4, i8* %0) #4, !dbg !56 - tail call void @llvm.dbg.value(metadata %struct.AAA3* %var1, i64 0, metadata !32, metadata !57), !dbg !58 - tail call void @llvm.dbg.value(metadata %struct.AAA3* %var1, i64 0, metadata !36, metadata !46), !dbg !59 - tail call void @llvm.dbg.value(metadata i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i64 0, metadata !38, metadata !46), !dbg !62 - call void @_Z3fooPcjPKc(i8* %0, i32 4, i8* nonnull getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0)), !dbg !63 - %1 = getelementptr inbounds %struct.AAA3, %struct.AAA3* %var2, i64 0, i32 0, i64 0, !dbg !65 - call void @llvm.lifetime.start(i64 4, i8* %1) #4, !dbg !65 - call void @llvm.dbg.value(metadata %struct.AAA3* %var2, i64 0, metadata !33, metadata !57), !dbg !66 - call void @llvm.dbg.value(metadata %struct.AAA3* %var2, i64 0, metadata !36, metadata !46), !dbg !67 - call void @llvm.dbg.value(metadata i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i64 0, metadata !38, metadata !46), !dbg !69 - call void @_Z3fooPcjPKc(i8* %1, i32 4, i8* nonnull getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0)), !dbg !70 - %tobool1 = icmp eq i32 %param1, 0, !dbg !71 - call void @llvm.dbg.value(metadata %struct.AAA3* %var2, i64 0, metadata !33, metadata !57), !dbg !66 - call void @llvm.dbg.value(metadata %struct.AAA3* %var2, i64 0, metadata !41, metadata !46), !dbg !73 - br i1 %tobool1, label %if.else, label %if.then2, !dbg !75 + tail call void @llvm.dbg.value(metadata %struct.AAA3* %var1, i64 0, metadata !33, metadata !DIExpression()), !dbg !55 + tail call void @llvm.dbg.value(metadata %struct.AAA3* %var1, i64 0, metadata !56, metadata !DIExpression()), !dbg !57 + tail call void @llvm.dbg.value(metadata !58, i64 0, metadata !59, metadata !DIExpression()), !dbg !60 + %arraydecay.i = getelementptr inbounds %struct.AAA3, %struct.AAA3* %var1, i64 0, i32 0, i64 0, !dbg !61 + call void @_Z3fooPcjPKc(i8* %arraydecay.i, i32 4, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0)), !dbg !61 + call void @llvm.dbg.value(metadata %struct.AAA3* %var2, i64 0, metadata !34, metadata !DIExpression()), !dbg !63 + call void @llvm.dbg.value(metadata %struct.AAA3* %var2, i64 0, metadata !64, metadata !DIExpression()), !dbg !65 + call void @llvm.dbg.value(metadata !58, i64 0, metadata !66, metadata !DIExpression()), !dbg !67 + %arraydecay.i5 = getelementptr inbounds %struct.AAA3, %struct.AAA3* %var2, i64 0, i32 0, i64 0, !dbg !68 + call void @_Z3fooPcjPKc(i8* %arraydecay.i5, i32 4, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0)), !dbg !68 + %tobool1 = icmp eq i32 %param1, 0, !dbg !69 + call void @llvm.dbg.value(metadata %struct.AAA3* %var2, i64 0, metadata !34, metadata !DIExpression()), !dbg !63 + br i1 %tobool1, label %if.else, label %if.then2, !dbg !69 if.then2: ; preds = %if.end - call void @llvm.dbg.value(metadata i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i64 0, metadata !42, metadata !46), !dbg !76 - call void @_Z3fooPcjPKc(i8* %1, i32 4, i8* nonnull getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0)), !dbg !78 - br label %if.end3, !dbg !79 + call void @llvm.dbg.value(metadata %struct.AAA3* %var2, i64 0, metadata !71, metadata !DIExpression()), !dbg !73 + call void @llvm.dbg.value(metadata !74, i64 0, metadata !75, metadata !DIExpression()), !dbg !76 + call void @_Z3fooPcjPKc(i8* %arraydecay.i5, i32 4, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str1, i64 0, i64 0)), !dbg !76 + br label %if.end3, !dbg !72 if.else: ; preds = %if.end - call void @llvm.dbg.value(metadata i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i64 0, metadata !42, metadata !46), !dbg !80 - call void @_Z3fooPcjPKc(i8* %1, i32 4, i8* nonnull getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0)), !dbg !81 + call void @llvm.dbg.value(metadata %struct.AAA3* %var2, i64 0, metadata !77, metadata !DIExpression()), !dbg !79 + call void @llvm.dbg.value(metadata !80, i64 0, metadata !81, metadata !DIExpression()), !dbg !82 + call void @_Z3fooPcjPKc(i8* %arraydecay.i5, i32 4, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str2, i64 0, i64 0)), !dbg !82 br label %if.end3 if.end3: ; preds = %if.else, %if.then2 - call void @llvm.dbg.value(metadata %struct.AAA3* %var1, i64 0, metadata !32, metadata !57), !dbg !58 - call void @llvm.dbg.value(metadata %struct.AAA3* %var1, i64 0, metadata !41, metadata !46), !dbg !82 - call void @llvm.dbg.value(metadata i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0), i64 0, metadata !42, metadata !46), !dbg !84 - call void @_Z3fooPcjPKc(i8* %0, i32 4, i8* nonnull getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0)), !dbg !85 - call void @llvm.lifetime.end(i64 4, i8* %1) #4, !dbg !86 - call void @llvm.lifetime.end(i64 4, i8* %0) #4, !dbg !87 - ret void, !dbg !86 + call void @llvm.dbg.value(metadata %struct.AAA3* %var1, i64 0, metadata !33, metadata !DIExpression()), !dbg !55 + call void @llvm.dbg.value(metadata %struct.AAA3* %var1, i64 0, metadata !83, metadata !DIExpression()), !dbg !85 + call void @llvm.dbg.value(metadata !58, i64 0, metadata !86, metadata !DIExpression()), !dbg !87 + call void @_Z3fooPcjPKc(i8* %arraydecay.i, i32 4, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0)), !dbg !87 + ret void, !dbg !88 } -; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start(i64, i8* nocapture) #1 +declare i8* @_Z5i2stri(i32) #1 -declare i8* @_Z5i2stri(i32) #2 - -; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end(i64, i8* nocapture) #1 - -declare void @_Z3fooPcjPKc(i8*, i32, i8*) #2 +declare void @_Z3fooPcjPKc(i8*, i32, i8*) #1 ; Function Attrs: nounwind readnone -declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #3 +declare void @llvm.dbg.value(metadata, i64, metadata, metadata) #2 -attributes #0 = { uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" } -attributes #1 = { argmemonly nounwind } -attributes #2 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" } -attributes #3 = { nounwind readnone } -attributes #4 = { nounwind } +attributes #0 = { uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #2 = { nounwind readnone } !llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!43, !44} -!llvm.ident = !{!45} +!llvm.module.flags = !{!44, !45} +!llvm.ident = !{!46} -!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.8.0 (trunk 255993) (llvm/trunk 256074)", isOptimized: true, runtimeVersion: 0, emissionKind: 1, enums: !2, retainedTypes: !3, subprograms: !23) -!1 = !DIFile(filename: "test.cpp", directory: "/mnt/extra") +!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 ", isOptimized: true, emissionKind: 1, file: !1, enums: !2, retainedTypes: !3, subprograms: !23, globals: !2, imports: !2) +!1 = !DIFile(filename: "dbg-changes-codegen-branch-folding.cpp", directory: "/tmp/dbginfo") !2 = !{} !3 = !{!4} -!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "AAA3", file: !1, line: 4, size: 32, align: 8, elements: !5, identifier: "_ZTS4AAA3") +!4 = !DICompositeType(tag: DW_TAG_structure_type, name: "AAA3", line: 4, size: 32, align: 8, file: !1, elements: !5, identifier: "_ZTS4AAA3") !5 = !{!6, !11, !17, !18} -!6 = !DIDerivedType(tag: DW_TAG_member, name: "text", scope: !"_ZTS4AAA3", file: !1, line: 8, baseType: !7, size: 32, align: 8) -!7 = !DICompositeType(tag: DW_TAG_array_type, baseType: !8, size: 32, align: 8, elements: !9) -!8 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char) +!6 = !DIDerivedType(tag: DW_TAG_member, name: "text", line: 8, size: 32, align: 8, file: !1, scope: !"_ZTS4AAA3", baseType: !7) +!7 = !DICompositeType(tag: DW_TAG_array_type, size: 32, align: 8, baseType: !8, elements: !9) +!8 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char) !9 = !{!10} !10 = !DISubrange(count: 4) -!11 = !DISubprogram(name: "AAA3", scope: !"_ZTS4AAA3", file: !1, line: 5, type: !12, isLocal: false, isDefinition: false, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: true) +!11 = !DISubprogram(name: "AAA3", line: 5, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 5, file: !1, scope: !"_ZTS4AAA3", type: !12) !12 = !DISubroutineType(types: !13) !13 = !{null, !14, !15} -!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !"_ZTS4AAA3", size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer) -!15 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !16, size: 64, align: 64) +!14 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer, baseType: !"_ZTS4AAA3") +!15 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !16) !16 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !8) -!17 = !DISubprogram(name: "operator=", linkageName: "_ZN4AAA3aSEPKc", scope: !"_ZTS4AAA3", file: !1, line: 6, type: !12, isLocal: false, isDefinition: false, scopeLine: 6, flags: DIFlagPrototyped, isOptimized: true) -!18 = !DISubprogram(name: "operator const char *", linkageName: "_ZNK4AAA3cvPKcEv", scope: !"_ZTS4AAA3", file: !1, line: 7, type: !19, isLocal: false, isDefinition: false, scopeLine: 7, flags: DIFlagPrototyped, isOptimized: true) +!17 = !DISubprogram(name: "operator=", linkageName: "_ZN4AAA3aSEPKc", line: 6, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 6, file: !1, scope: !"_ZTS4AAA3", type: !12) +!18 = !DISubprogram(name: "operator const char *", linkageName: "_ZNK4AAA3cvPKcEv", line: 7, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 7, file: !1, scope: !"_ZTS4AAA3", type: !19) !19 = !DISubroutineType(types: !20) !20 = !{!15, !21} -!21 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !22, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer) +!21 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer, baseType: !22) !22 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !"_ZTS4AAA3") -!23 = !{!24, !34, !39} -!24 = distinct !DISubprogram(name: "bar", linkageName: "_Z3barii", scope: !1, file: !1, line: 11, type: !25, isLocal: false, isDefinition: true, scopeLine: 11, flags: DIFlagPrototyped, isOptimized: true, variables: !28) -!25 = !DISubroutineType(types: !26) -!26 = !{null, !27, !27} -!27 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) -!28 = !{!29, !30, !31, !32, !33} -!29 = !DILocalVariable(name: "param1", arg: 1, scope: !24, file: !1, line: 11, type: !27) -!30 = !DILocalVariable(name: "param2", arg: 2, scope: !24, file: !1, line: 11, type: !27) -!31 = !DILocalVariable(name: "temp", scope: !24, file: !1, line: 12, type: !15) -!32 = !DILocalVariable(name: "var1", scope: !24, file: !1, line: 17, type: !"_ZTS4AAA3") -!33 = !DILocalVariable(name: "var2", scope: !24, file: !1, line: 18, type: !"_ZTS4AAA3") -!34 = distinct !DISubprogram(name: "AAA3", linkageName: "_ZN4AAA3C2EPKc", scope: !"_ZTS4AAA3", file: !1, line: 5, type: !12, isLocal: false, isDefinition: true, scopeLine: 5, flags: DIFlagPrototyped, isOptimized: true, declaration: !11, variables: !35) -!35 = !{!36, !38} -!36 = !DILocalVariable(name: "this", arg: 1, scope: !34, type: !37, flags: DIFlagArtificial | DIFlagObjectPointer) -!37 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !"_ZTS4AAA3", size: 64, align: 64) -!38 = !DILocalVariable(name: "value", arg: 2, scope: !34, file: !1, line: 5, type: !15) -!39 = distinct !DISubprogram(name: "operator=", linkageName: "_ZN4AAA3aSEPKc", scope: !"_ZTS4AAA3", file: !1, line: 6, type: !12, isLocal: false, isDefinition: true, scopeLine: 6, flags: DIFlagPrototyped, isOptimized: true, declaration: !17, variables: !40) -!40 = !{!41, !42} -!41 = !DILocalVariable(name: "this", arg: 1, scope: !39, type: !37, flags: DIFlagArtificial | DIFlagObjectPointer) -!42 = !DILocalVariable(name: "value", arg: 2, scope: !39, file: !1, line: 6, type: !15) -!43 = !{i32 2, !"Dwarf Version", i32 4} -!44 = !{i32 2, !"Debug Info Version", i32 3} -!45 = !{!"clang version 3.8.0 (trunk 255993) (llvm/trunk 256074)"} -!46 = !DIExpression() -!47 = !DILocation(line: 11, column: 15, scope: !24) -!48 = !DILocation(line: 11, column: 26, scope: !24) -!49 = !DILocation(line: 12, column: 16, scope: !24) -!50 = !DILocation(line: 14, column: 7, scope: !51) -!51 = distinct !DILexicalBlock(scope: !24, file: !1, line: 14, column: 7) -!52 = !DILocation(line: 14, column: 7, scope: !24) -!53 = !DILocation(line: 15, column: 12, scope: !54) -!54 = distinct !DILexicalBlock(scope: !51, file: !1, line: 14, column: 15) -!55 = !DILocation(line: 16, column: 3, scope: !54) -!56 = !DILocation(line: 17, column: 3, scope: !24) -!57 = !DIExpression(DW_OP_deref) -!58 = !DILocation(line: 17, column: 8, scope: !24) -!59 = !DILocation(line: 0, scope: !34, inlinedAt: !60) -!60 = distinct !DILocation(line: 17, column: 8, scope: !61) -!61 = !DILexicalBlockFile(scope: !24, file: !1, discriminator: 1) -!62 = !DILocation(line: 5, column: 19, scope: !34, inlinedAt: !60) -!63 = !DILocation(line: 5, column: 28, scope: !64, inlinedAt: !60) -!64 = distinct !DILexicalBlock(scope: !34, file: !1, line: 5, column: 26) -!65 = !DILocation(line: 18, column: 3, scope: !24) -!66 = !DILocation(line: 18, column: 8, scope: !24) -!67 = !DILocation(line: 0, scope: !34, inlinedAt: !68) -!68 = distinct !DILocation(line: 18, column: 8, scope: !61) -!69 = !DILocation(line: 5, column: 19, scope: !34, inlinedAt: !68) -!70 = !DILocation(line: 5, column: 28, scope: !64, inlinedAt: !68) -!71 = !DILocation(line: 20, column: 7, scope: !72) -!72 = distinct !DILexicalBlock(scope: !24, file: !1, line: 20, column: 7) -!73 = !DILocation(line: 0, scope: !39, inlinedAt: !74) -!74 = distinct !DILocation(line: 23, column: 10, scope: !72) -!75 = !DILocation(line: 20, column: 7, scope: !24) -!76 = !DILocation(line: 6, column: 29, scope: !39, inlinedAt: !77) -!77 = distinct !DILocation(line: 21, column: 10, scope: !72) -!78 = !DILocation(line: 6, column: 38, scope: !39, inlinedAt: !77) -!79 = !DILocation(line: 21, column: 5, scope: !72) -!80 = !DILocation(line: 6, column: 29, scope: !39, inlinedAt: !74) -!81 = !DILocation(line: 6, column: 38, scope: !39, inlinedAt: !74) -!82 = !DILocation(line: 0, scope: !39, inlinedAt: !83) -!83 = distinct !DILocation(line: 24, column: 8, scope: !24) -!84 = !DILocation(line: 6, column: 29, scope: !39, inlinedAt: !83) -!85 = !DILocation(line: 6, column: 38, scope: !39, inlinedAt: !83) -!86 = !DILocation(line: 25, column: 1, scope: !24) -!87 = !DILocation(line: 25, column: 1, scope: !61) +!23 = !{!24, !35, !40} +!24 = distinct !DISubprogram(name: "bar", linkageName: "_Z3barii", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 11, file: !1, scope: !25, type: !26, variables: !29) +!25 = !DIFile(filename: "dbg-changes-codegen-branch-folding.cpp", directory: "/tmp/dbginfo") +!26 = !DISubroutineType(types: !27) +!27 = !{null, !28, !28} +!28 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) +!29 = !{!30, !31, !32, !33, !34} +!30 = !DILocalVariable(name: "param1", line: 11, arg: 1, scope: !24, file: !25, type: !28) +!31 = !DILocalVariable(name: "param2", line: 11, arg: 2, scope: !24, file: !25, type: !28) +!32 = !DILocalVariable(name: "temp", line: 12, scope: !24, file: !25, type: !15) +!33 = !DILocalVariable(name: "var1", line: 17, scope: !24, file: !25, type: !"_ZTS4AAA3") +!34 = !DILocalVariable(name: "var2", line: 18, scope: !24, file: !25, type: !"_ZTS4AAA3") +!35 = distinct !DISubprogram(name: "operator=", linkageName: "_ZN4AAA3aSEPKc", line: 6, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 6, file: !1, scope: !"_ZTS4AAA3", type: !12, declaration: !17, variables: !36) +!36 = !{!37, !39} +!37 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !35, type: !38) +!38 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !"_ZTS4AAA3") +!39 = !DILocalVariable(name: "value", line: 6, arg: 2, scope: !35, file: !25, type: !15) +!40 = distinct !DISubprogram(name: "AAA3", linkageName: "_ZN4AAA3C2EPKc", line: 5, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 5, file: !1, scope: !"_ZTS4AAA3", type: !12, declaration: !11, variables: !41) +!41 = !{!42, !43} +!42 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !40, type: !38) +!43 = !DILocalVariable(name: "value", line: 5, arg: 2, scope: !40, file: !25, type: !15) +!44 = !{i32 2, !"Dwarf Version", i32 4} +!45 = !{i32 2, !"Debug Info Version", i32 3} +!46 = !{!"clang version 3.5.0 "} +!47 = !DILocation(line: 11, scope: !24) +!48 = !{i8* null} +!49 = !DILocation(line: 12, scope: !24) +!50 = !DILocation(line: 14, scope: !51) +!51 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !24) +!52 = !DILocation(line: 15, scope: !53) +!53 = distinct !DILexicalBlock(line: 14, column: 0, file: !1, scope: !51) +!54 = !DILocation(line: 16, scope: !53) +!55 = !DILocation(line: 17, scope: !24) +!56 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !40, type: !38) +!57 = !DILocation(line: 0, scope: !40, inlinedAt: !55) +!58 = !{i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0)} +!59 = !DILocalVariable(name: "value", line: 5, arg: 2, scope: !40, file: !25, type: !15) +!60 = !DILocation(line: 5, scope: !40, inlinedAt: !55) +!61 = !DILocation(line: 5, scope: !62, inlinedAt: !55) +!62 = distinct !DILexicalBlock(line: 5, column: 0, file: !1, scope: !40) +!63 = !DILocation(line: 18, scope: !24) +!64 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !40, type: !38) +!65 = !DILocation(line: 0, scope: !40, inlinedAt: !63) +!66 = !DILocalVariable(name: "value", line: 5, arg: 2, scope: !40, file: !25, type: !15) +!67 = !DILocation(line: 5, scope: !40, inlinedAt: !63) +!68 = !DILocation(line: 5, scope: !62, inlinedAt: !63) +!69 = !DILocation(line: 20, scope: !70) +!70 = distinct !DILexicalBlock(line: 20, column: 0, file: !1, scope: !24) +!71 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !35, type: !38) +!72 = !DILocation(line: 21, scope: !70) +!73 = !DILocation(line: 0, scope: !35, inlinedAt: !72) +!74 = !{i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str1, i64 0, i64 0)} +!75 = !DILocalVariable(name: "value", line: 6, arg: 2, scope: !35, file: !25, type: !15) +!76 = !DILocation(line: 6, scope: !35, inlinedAt: !72) +!77 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !35, type: !38) +!78 = !DILocation(line: 23, scope: !70) +!79 = !DILocation(line: 0, scope: !35, inlinedAt: !78) +!80 = !{i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str2, i64 0, i64 0)} +!81 = !DILocalVariable(name: "value", line: 6, arg: 2, scope: !35, file: !25, type: !15) +!82 = !DILocation(line: 6, scope: !35, inlinedAt: !78) +!83 = !DILocalVariable(name: "this", arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !35, type: !38) +!84 = !DILocation(line: 24, scope: !24) +!85 = !DILocation(line: 0, scope: !35, inlinedAt: !84) +!86 = !DILocalVariable(name: "value", line: 6, arg: 2, scope: !35, file: !25, type: !15) +!87 = !DILocation(line: 6, scope: !35, inlinedAt: !84) +!88 = !DILocation(line: 25, scope: !24) diff --git a/test/CodeGen/X86/fpstack-debuginstr-kill.ll b/test/CodeGen/X86/fpstack-debuginstr-kill.ll index 4de54b13b2a..2ee67dc190b 100644 --- a/test/CodeGen/X86/fpstack-debuginstr-kill.ll +++ b/test/CodeGen/X86/fpstack-debuginstr-kill.ll @@ -60,7 +60,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) !14 = !DIDerivedType(tag: DW_TAG_typedef, name: "fpu_extended", line: 3, file: !5, baseType: !15) !15 = !DIDerivedType(tag: DW_TAG_typedef, name: "fpu_register", line: 2, file: !5, baseType: !16) !16 = !DIDerivedType(tag: DW_TAG_typedef, name: "uae_f64", line: 1, file: !5, baseType: !17) -!17 = !DIBasicType(tag: DW_TAG_base_type, name: "long double", size: 128, align: 128, encoding: DW_ATE_float) +!17 = !DIBasicType(tag: DW_TAG_base_type, name: "double", size: 64, align: 64, encoding: DW_ATE_float) !18 = !DILocalVariable(name: "a", line: 15, scope: !4, file: !6, type: !19) !19 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !20 = !DILocalVariable(name: "value", line: 16, scope: !4, file: !6, type: !14) diff --git a/test/CodeGen/X86/misched-code-difference-with-debug.ll b/test/CodeGen/X86/misched-code-difference-with-debug.ll index db0bb6388f2..0a1ea830a41 100644 --- a/test/CodeGen/X86/misched-code-difference-with-debug.ll +++ b/test/CodeGen/X86/misched-code-difference-with-debug.ll @@ -49,10 +49,10 @@ entry: %0 = load i8, i8* @argc, align 1 tail call void @llvm.dbg.value(metadata i8 %0, i64 0, metadata !19, metadata !29), !dbg !DILocation(scope: !13) %conv = sext i8 %0 to i32 - tail call void @llvm.dbg.value(metadata %class.C* %c, i64 0, metadata !18, metadata !DIExpression(DW_OP_deref)), !dbg !DILocation(scope: !13) + tail call void @llvm.dbg.value(metadata %class.C* %c, i64 0, metadata !18, metadata !29), !dbg !DILocation(scope: !13) %call = call i32 (%class.C*, i8, i8, i8, ...) @test_function(%class.C* %c, i8 signext 0, i8 signext %0, i8 signext 0, i32 %conv) %1 = load i8, i8* @argc, align 1 - call void @llvm.dbg.value(metadata %class.C* %c, i64 0, metadata !18, metadata !DIExpression(DW_OP_deref)), !dbg !DILocation(scope: !13) + call void @llvm.dbg.value(metadata %class.C* %c, i64 0, metadata !18, metadata !29), !dbg !DILocation(scope: !13) %call2 = call i32 (%class.C*, i8, i8, i8, ...) @test_function(%class.C* %c, i8 signext 0, i8 signext %1, i8 signext 0, i32 %conv) ret void } diff --git a/test/DebugInfo/AArch64/frameindices.ll b/test/DebugInfo/AArch64/frameindices.ll index aea95996f8e..5fb03dfc883 100644 --- a/test/DebugInfo/AArch64/frameindices.ll +++ b/test/DebugInfo/AArch64/frameindices.ll @@ -239,7 +239,7 @@ attributes #5 = { builtin } !76 = !DIExpression(DW_OP_bit_piece, 8, 120) !77 = !DILocation(line: 17, column: 12, scope: !31, inlinedAt: !75) !78 = !DIExpression(DW_OP_bit_piece, 136, 56) -!79 = !DIExpression(DW_OP_deref) +!79 = !DIExpression() !80 = !DILocation(line: 19, column: 5, scope: !34) !81 = !DILocation(line: 20, column: 7, scope: !34) !82 = !DILocation(line: 20, column: 5, scope: !34) diff --git a/test/DebugInfo/Generic/2010-05-03-OriginDIE.ll b/test/DebugInfo/Generic/2010-05-03-OriginDIE.ll index e2b1ce268d3..9ebfb06cc5e 100644 --- a/test/DebugInfo/Generic/2010-05-03-OriginDIE.ll +++ b/test/DebugInfo/Generic/2010-05-03-OriginDIE.ll @@ -23,12 +23,12 @@ entry: %a10 = call i64 @llvm.bswap.i64(i64 %a9) nounwind ; [#uses=1] %a11 = getelementptr inbounds %struct.gpt_t, %struct.gpt_t* %gpt, i32 0, i32 8, !dbg !7 ; [#uses=1] %a12 = load i64, i64* %a11, align 4, !dbg !7 ; [#uses=1] - call void @llvm.dbg.declare(metadata i64* %data_addr.i17, metadata !8, metadata !DIExpression(DW_OP_deref)) nounwind, !dbg !14 + call void @llvm.dbg.declare(metadata i64* %data_addr.i17, metadata !8, metadata !DIExpression()) nounwind, !dbg !14 store i64 %a12, i64* %data_addr.i17, align 8 call void @llvm.dbg.value(metadata !6, i64 0, metadata !15, metadata !DIExpression()) nounwind, !dbg !DILocation(scope: !16) call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !19, metadata !DIExpression()) nounwind, !dbg !DILocation(scope: !16) call void @llvm.dbg.declare(metadata !6, metadata !23, metadata !DIExpression()) nounwind, !dbg !DILocation(scope: !24) - call void @llvm.dbg.value(metadata i64* %data_addr.i17, i64 0, metadata !34, metadata !DIExpression(DW_OP_deref)) nounwind, !dbg !DILocation(scope: !24) + call void @llvm.dbg.value(metadata i64* %data_addr.i17, i64 0, metadata !34, metadata !DIExpression()) nounwind, !dbg !DILocation(scope: !24) %a13 = load volatile i64, i64* %data_addr.i17, align 8 ; [#uses=1] %a14 = call i64 @llvm.bswap.i64(i64 %a13) nounwind ; [#uses=2] %a15 = add i64 %a10, %a14, !dbg !7 ; [#uses=1] diff --git a/test/DebugInfo/Generic/incorrect-variable-debugloc1.ll b/test/DebugInfo/Generic/incorrect-variable-debugloc1.ll index 78a738261c8..33af0baeb65 100644 --- a/test/DebugInfo/Generic/incorrect-variable-debugloc1.ll +++ b/test/DebugInfo/Generic/incorrect-variable-debugloc1.ll @@ -35,7 +35,7 @@ entry: %call = tail call i32 @_Z4funcv(), !dbg !19 tail call void @llvm.dbg.value(metadata i32 %call, i64 0, metadata !10, metadata !16), !dbg !17 store volatile i32 %call, i32* %c, align 4, !dbg !19 - tail call void @llvm.dbg.value(metadata i32* %c, i64 0, metadata !10, metadata !21), !dbg !17 + tail call void @llvm.dbg.value(metadata i32* %c, i64 0, metadata !10, metadata !16), !dbg !17 %c.0.c.0. = load volatile i32, i32* %c, align 4, !dbg !20 ret i32 %c.0.c.0., !dbg !20 } @@ -74,5 +74,4 @@ attributes #2 = { nounwind readnone } !18 = !DILocation(line: 5, column: 3, scope: !4) !19 = !DILocation(line: 6, column: 7, scope: !4) !20 = !DILocation(line: 7, column: 3, scope: !4) -!21 = !DIExpression(DW_OP_deref) diff --git a/test/DebugInfo/Generic/two-cus-from-same-file.ll b/test/DebugInfo/Generic/two-cus-from-same-file.ll index 83321e950ed..65d376c814d 100644 --- a/test/DebugInfo/Generic/two-cus-from-same-file.ll +++ b/test/DebugInfo/Generic/two-cus-from-same-file.ll @@ -24,8 +24,7 @@ declare i32 @puts(i8* nocapture) nounwind define i32 @main(i32 %argc, i8** nocapture %argv) nounwind !dbg !12 { entry: tail call void @llvm.dbg.value(metadata i32 %argc, i64 0, metadata !21, metadata !DIExpression()), !dbg !26 - ; Avoid talking about the pointer size in debug info because that's target dependent - tail call void @llvm.dbg.value(metadata i8** %argv, i64 0, metadata !22, metadata !DIExpression(DW_OP_deref, DW_OP_deref)), !dbg !27 + tail call void @llvm.dbg.value(metadata i8** %argv, i64 0, metadata !22, metadata !DIExpression()), !dbg !27 %puts = tail call i32 @puts(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @str1, i32 0, i32 0)), !dbg !28 tail call void @foo() nounwind, !dbg !30 ret i32 0, !dbg !31 @@ -47,12 +46,14 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon !10 = !{!12} !12 = distinct !DISubprogram(name: "main", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 11, file: !32, scope: !6, type: !13, variables: !19) !13 = !DISubroutineType(types: !14) -!14 = !{!15, !15, !18} +!14 = !{!15, !15, !16} !15 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) +!16 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, baseType: !17) +!17 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, baseType: !18) !18 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char) !19 = !{!21, !22} !21 = !DILocalVariable(name: "argc", line: 11, arg: 1, scope: !12, file: !6, type: !15) -!22 = !DILocalVariable(name: "argv", line: 11, arg: 2, scope: !12, file: !6, type: !18) +!22 = !DILocalVariable(name: "argv", line: 11, arg: 2, scope: !12, file: !6, type: !16) !23 = !DILocation(line: 6, column: 3, scope: !24) !24 = distinct !DILexicalBlock(line: 5, column: 16, file: !32, scope: !5) !25 = !DILocation(line: 7, column: 1, scope: !24) diff --git a/test/DebugInfo/Mips/dsr-non-fixed-objects.ll b/test/DebugInfo/Mips/dsr-non-fixed-objects.ll index ddd24ff5ee1..7bd68318ca5 100644 --- a/test/DebugInfo/Mips/dsr-non-fixed-objects.ll +++ b/test/DebugInfo/Mips/dsr-non-fixed-objects.ll @@ -65,7 +65,7 @@ entry: %1 = load i32, i32* %b.addr, align 4, !dbg !35 %add = add nsw i32 %0, %1, !dbg !36 store i32 %add, i32* %c, align 16, !dbg !33 - call void @llvm.dbg.declare(metadata i32** %w, metadata !37, metadata !DIExpression(DW_OP_deref)), !dbg !38 + call void @llvm.dbg.declare(metadata i32** %w, metadata !37, metadata !16), !dbg !38 %2 = load i32, i32* %c, align 16, !dbg !39 %3 = alloca i8, i32 %2, !dbg !40 %4 = bitcast i8* %3 to i32*, !dbg !40 diff --git a/test/DebugInfo/X86/bbjoin.ll b/test/DebugInfo/X86/bbjoin.ll index 385cb6cc779..8061a8d2ce9 100644 --- a/test/DebugInfo/X86/bbjoin.ll +++ b/test/DebugInfo/X86/bbjoin.ll @@ -30,9 +30,9 @@ entry: call void @llvm.lifetime.start(i64 4, i8* %0) #4, !dbg !14 tail call void @llvm.dbg.value(metadata i32 23, i64 0, metadata !9, metadata !15), !dbg !16 store i32 23, i32* %x, align 4, !dbg !16, !tbaa !17 - tail call void @llvm.dbg.value(metadata i32* %x, i64 0, metadata !9, metadata !DIExpression(DW_OP_deref)), !dbg !16 + tail call void @llvm.dbg.value(metadata i32* %x, i64 0, metadata !9, metadata !15), !dbg !16 call void @g(i32* nonnull %x) #4, !dbg !21 - call void @llvm.dbg.value(metadata i32* %x, i64 0, metadata !9, metadata !DIExpression(DW_OP_deref)), !dbg !16 + call void @llvm.dbg.value(metadata i32* %x, i64 0, metadata !9, metadata !15), !dbg !16 %1 = load i32, i32* %x, align 4, !dbg !22, !tbaa !17 %cmp = icmp eq i32 %1, 42, !dbg !24 br i1 %cmp, label %if.then, label %if.end, !dbg !25 @@ -44,7 +44,7 @@ if.then: ; preds = %entry if.end: ; preds = %if.then, %entry %2 = phi i32 [ 43, %if.then ], [ %1, %entry ], !dbg !27 - call void @llvm.dbg.value(metadata i32* %x, i64 0, metadata !9, metadata !DIExpression(DW_OP_deref)), !dbg !16 + call void @llvm.dbg.value(metadata i32* %x, i64 0, metadata !9, metadata !15), !dbg !16 call void @llvm.lifetime.end(i64 4, i8* %0) #4, !dbg !28 ret i32 %2, !dbg !29 } diff --git a/test/DebugInfo/X86/dbg-value-dag-combine.ll b/test/DebugInfo/X86/dbg-value-dag-combine.ll index 39d533fa3ca..6243be8aa4a 100644 --- a/test/DebugInfo/X86/dbg-value-dag-combine.ll +++ b/test/DebugInfo/X86/dbg-value-dag-combine.ll @@ -1,6 +1,6 @@ ; RUN: llc < %s | FileCheck %s -target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:32" -target triple = "i686-apple-darwin" +target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" +target triple = "x86_64-apple-darwin10.0.0" ; PR 9817 diff --git a/test/DebugInfo/X86/dbg-value-isel.ll b/test/DebugInfo/X86/dbg-value-isel.ll index e673410ab26..ae76beb8140 100644 --- a/test/DebugInfo/X86/dbg-value-isel.ll +++ b/test/DebugInfo/X86/dbg-value-isel.ll @@ -86,7 +86,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon !2 = distinct !DICompileUnit(language: DW_LANG_C89, producer: "clc", isOptimized: false, emissionKind: 1, file: !20, enums: !21, retainedTypes: !21, subprograms: !19, imports: null) !3 = !DISubroutineType(types: !4) !4 = !{null, !5} -!5 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align:64, scope: !2, baseType: !6) +!5 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !2, baseType: !6) !6 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint", file: !20, scope: !2, baseType: !7) !7 = !DIBasicType(tag: DW_TAG_base_type, name: "unsigned int", size: 32, align: 32, encoding: DW_ATE_unsigned) !8 = !DILocalVariable(name: "ip", line: 1, arg: 1, scope: !0, file: !1, type: !5) diff --git a/test/DebugInfo/X86/dbg-value-terminator.ll b/test/DebugInfo/X86/dbg-value-terminator.ll index 45b5886dc73..8b8bdec18ab 100644 --- a/test/DebugInfo/X86/dbg-value-terminator.ll +++ b/test/DebugInfo/X86/dbg-value-terminator.ll @@ -7,7 +7,6 @@ ; ; CHECK-LABEL: test: ; CHECK: ##DEBUG_VALUE: foo:i - %a = type { i32, i32 } define hidden fastcc %a* @test() #1 !dbg !1 { @@ -88,7 +87,7 @@ VEC_edge_base_index.exit7.i: ; preds = %"3.i5.i" "44.i": ; preds = %"42.i" %2 = load %a*, %a** undef, align 8, !dbg !12 %3 = bitcast %a* %2 to %a*, !dbg !12 - call void @llvm.dbg.value(metadata %a* %3, i64 0, metadata !6, metadata !DIExpression(DW_OP_deref)), !dbg !12 + call void @llvm.dbg.value(metadata %a* %3, i64 0, metadata !6, metadata !DIExpression()), !dbg !12 br label %may_unswitch_on.exit, !dbg !12 "45.i": ; preds = %"38.i" diff --git a/test/DebugInfo/X86/elf-names.ll b/test/DebugInfo/X86/elf-names.ll index 219847cdf9a..2c857192762 100644 --- a/test/DebugInfo/X86/elf-names.ll +++ b/test/DebugInfo/X86/elf-names.ll @@ -81,7 +81,7 @@ declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnon !20 = !DISubprogram(name: "D", line: 4, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: true, scopeLine: 4, file: !6, scope: !10, type: !21) !21 = !DISubroutineType(types: !22) !22 = !{null, !9, !23} -!23 = !DIDerivedType(tag: DW_TAG_reference_type, size: 64, align: 64, baseType: !24) +!23 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !24) !24 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !10) !27 = !{!29} !29 = !DILocalVariable(name: "this", line: 12, arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !5, file: !6, type: !30) diff --git a/test/DebugInfo/X86/nodebug_with_debug_loc.ll b/test/DebugInfo/X86/nodebug_with_debug_loc.ll index 1bf96c02fe1..4ccf22bdc5a 100644 --- a/test/DebugInfo/X86/nodebug_with_debug_loc.ll +++ b/test/DebugInfo/X86/nodebug_with_debug_loc.ll @@ -58,8 +58,8 @@ entry: for.body: ; preds = %for.body, %entry %iter.02 = phi i32 [ 0, %entry ], [ %inc, %for.body ] call void @llvm.lifetime.start(i64 4, i8* %0), !dbg !26 - call void @llvm.dbg.value(metadata %struct.string* %str2.i, i64 0, metadata !16, metadata !DIExpression(DW_OP_deref)) #3, !dbg !26 - call void @llvm.dbg.value(metadata %struct.string* %str2.i, i64 0, metadata !27, metadata !DIExpression(DW_OP_deref)) #3, !dbg !29 + call void @llvm.dbg.value(metadata %struct.string* %str2.i, i64 0, metadata !16, metadata !DIExpression()) #3, !dbg !26 + call void @llvm.dbg.value(metadata %struct.string* %str2.i, i64 0, metadata !27, metadata !DIExpression()) #3, !dbg !29 call void @_Z4sinkPKv(i8* undef) #3, !dbg !29 call void @_Z4sinkPKv(i8* %0) #3, !dbg !30 call void @llvm.lifetime.end(i64 4, i8* %0), !dbg !31 diff --git a/test/DebugInfo/X86/nophysreg.ll b/test/DebugInfo/X86/nophysreg.ll index db9cabf3c7c..ddf014b43b7 100644 --- a/test/DebugInfo/X86/nophysreg.ll +++ b/test/DebugInfo/X86/nophysreg.ll @@ -88,25 +88,25 @@ while.cond.loopexit: ; preds = %while.body4, %while while.body: ; preds = %entry, %while.cond.loopexit store i32 0, i32* %ref.tmp, align 4, !dbg !41, !tbaa !42 - call void @llvm.dbg.value(metadata i32* %x, i64 0, metadata !21, metadata !DIExpression(DW_OP_deref)), !dbg !46 + call void @llvm.dbg.value(metadata i32* %x, i64 0, metadata !21, metadata !36), !dbg !46 call void @_Z4funcRKiS0_(i32* dereferenceable(4) %x, i32* dereferenceable(4) %ref.tmp), !dbg !47 %call29 = call i32 @_Z4condv(), !dbg !48 %tobool310 = icmp eq i32 %call29, 0, !dbg !48 br i1 %tobool310, label %while.cond.loopexit, label %while.body4, !dbg !49 while.body4: ; preds = %while.body, %while.body4 - call void @llvm.dbg.value(metadata i8* %y, i64 0, metadata !23, metadata !DIExpression(DW_OP_deref)), !dbg !50 + call void @llvm.dbg.value(metadata i8* %y, i64 0, metadata !23, metadata !36), !dbg !50 call void @_Z4funcPv(i8* %y), !dbg !51 - call void @llvm.dbg.value(metadata i8* %j, i64 0, metadata !26, metadata !DIExpression(DW_OP_deref)), !dbg !52 + call void @llvm.dbg.value(metadata i8* %j, i64 0, metadata !26, metadata !36), !dbg !52 call void @_Z4funcPv(i8* %j), !dbg !53 - call void @llvm.dbg.value(metadata i8* %I, i64 0, metadata !27, metadata !DIExpression(DW_OP_deref)), !dbg !54 + call void @llvm.dbg.value(metadata i8* %I, i64 0, metadata !27, metadata !36), !dbg !54 call void @_Z4funcPv(i8* %I), !dbg !55 store i32 0, i32* %ref.tmp5, align 4, !dbg !56, !tbaa !42 store i32 0, i32* %ref.tmp6, align 4, !dbg !57, !tbaa !42 call void @_Z4funcRKiS0_(i32* dereferenceable(4) %ref.tmp5, i32* dereferenceable(4) %ref.tmp6), !dbg !58 call void @llvm.dbg.declare(metadata %struct.A* undef, metadata !28, metadata !36), !dbg !59 call void @llvm.dbg.value(metadata i32* %x, i64 0, metadata !28, metadata !33), !dbg !59 - call void @llvm.dbg.value(metadata i32* %x, i64 0, metadata !21, metadata !DIExpression(DW_OP_deref)), !dbg !46 + call void @llvm.dbg.value(metadata i32* %x, i64 0, metadata !21, metadata !36), !dbg !46 call void @llvm.dbg.value(metadata i32* %x, i64 0, metadata !60, metadata !33), !dbg !62 call void @llvm.dbg.value(metadata i32 undef, i64 0, metadata !60, metadata !35), !dbg !62 call void @llvm.dbg.declare(metadata %struct.A* undef, metadata !60, metadata !36), !dbg !62 diff --git a/test/DebugInfo/X86/rvalue-ref.ll b/test/DebugInfo/X86/rvalue-ref.ll index a348b1d8d25..c72a3aa2c04 100644 --- a/test/DebugInfo/X86/rvalue-ref.ll +++ b/test/DebugInfo/X86/rvalue-ref.ll @@ -30,7 +30,7 @@ declare i32 @printf(i8*, ...) !6 = !DIFile(filename: "foo.cpp", directory: "/Users/echristo/tmp") !7 = !DISubroutineType(types: !8) !8 = !{null, !9} -!9 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, size: 64, align: 64, baseType: !10) +!9 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !10) !10 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !11 = !DILocalVariable(name: "i", line: 4, arg: 1, scope: !5, file: !6, type: !9) !12 = !DILocation(line: 4, column: 17, scope: !5) diff --git a/test/DebugInfo/X86/sret.ll b/test/DebugInfo/X86/sret.ll index e48ed6567da..45af2821741 100644 --- a/test/DebugInfo/X86/sret.ll +++ b/test/DebugInfo/X86/sret.ll @@ -284,7 +284,7 @@ attributes #7 = { builtin nounwind } !19 = !DISubprogram(name: "A", line: 5, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 5, file: !1, scope: !"_ZTS1A", type: !20) !20 = !DISubroutineType(types: !21) !21 = !{null, !17, !22} -!22 = !DIDerivedType(tag: DW_TAG_reference_type, size: 64, align: 64, baseType: !23) +!22 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !23) !23 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !"_ZTS1A") !25 = !DISubprogram(name: "operator=", linkageName: "_ZN1AaSERKS_", line: 7, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !1, scope: !"_ZTS1A", type: !26) !26 = !DISubroutineType(types: !27) diff --git a/test/Transforms/CodeGenPrepare/X86/catchpad-phi-cast.ll b/test/Transforms/CodeGenPrepare/X86/catchpad-phi-cast.ll index cd3c1e8088e..8c5e01e3634 100644 --- a/test/Transforms/CodeGenPrepare/X86/catchpad-phi-cast.ll +++ b/test/Transforms/CodeGenPrepare/X86/catchpad-phi-cast.ll @@ -113,6 +113,6 @@ catch: !10 = !{!"clang version 3.8.0 (trunk 254906) (llvm/trunk 254917)"} !11 = !DILocalVariable(name: "p", scope: !4, file: !1, line: 2, type: !12) !12 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char) -!13 = !DIExpression(DW_OP_deref) +!13 = !DIExpression() !14 = !DILocation(line: 2, column: 8, scope: !4) !15 = !DILocation(line: 3, column: 1, scope: !4) diff --git a/test/Transforms/DeadStoreElimination/inst-limits.ll b/test/Transforms/DeadStoreElimination/inst-limits.ll index 6c91232c4ef..5848ab89bc8 100644 --- a/test/Transforms/DeadStoreElimination/inst-limits.ll +++ b/test/Transforms/DeadStoreElimination/inst-limits.ll @@ -118,7 +118,7 @@ entry: ; Insert a meaningless dbg.value intrinsic; it should have no ; effect on the working of DSE in any way. - call void @llvm.dbg.value(metadata i32 undef, i64 0, metadata !10, metadata !DIExpression()), !dbg !DILocation(scope: !4) + call void @llvm.dbg.value(metadata i32* undef, i64 0, metadata !10, metadata !DIExpression()), !dbg !DILocation(scope: !4) ; CHECK: store i32 -1, i32* @x, align 4 store i32 -1, i32* @x, align 4 diff --git a/test/Transforms/SLPVectorizer/X86/debug_info.ll b/test/Transforms/SLPVectorizer/X86/debug_info.ll index b3173a45742..4472225811b 100644 --- a/test/Transforms/SLPVectorizer/X86/debug_info.ll +++ b/test/Transforms/SLPVectorizer/X86/debug_info.ll @@ -25,8 +25,8 @@ define i32 @depth(double* nocapture %A, i32 %m) #0 !dbg !4 { entry: tail call void @llvm.dbg.value(metadata double* %A, i64 0, metadata !12, metadata !DIExpression()), !dbg !19 tail call void @llvm.dbg.value(metadata i32 %m, i64 0, metadata !13, metadata !DIExpression()), !dbg !19 - tail call void @llvm.dbg.value(metadata double 0.0, i64 0, metadata !14, metadata !DIExpression()), !dbg !21 - tail call void @llvm.dbg.value(metadata double 0.2, i64 0, metadata !15, metadata !DIExpression()), !dbg !21 + tail call void @llvm.dbg.value(metadata i32 00, i64 0, metadata !14, metadata !DIExpression()), !dbg !21 + tail call void @llvm.dbg.value(metadata i32 02, i64 0, metadata !15, metadata !DIExpression()), !dbg !21 tail call void @llvm.dbg.value(metadata i32 0, i64 0, metadata !16, metadata !DIExpression()), !dbg !23 %cmp8 = icmp sgt i32 %m, 0, !dbg !23 br i1 %cmp8, label %for.body.lr.ph, label %for.end, !dbg !23 -- 2.34.1