From 17c6afc35bacad4edc9aa32f046e56b5a1b7dfef Mon Sep 17 00:00:00 2001 From: Dehao Chen Date: Fri, 5 Aug 2016 17:56:49 +0000 Subject: [PATCH] Do not assign new discriminator for all intrinsics. Summary: We do not care about intrinsic calls when assigning discriminators. Reviewers: davidxl, dnovillo Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D23212 llvm-svn: 277843 --- llvm/lib/Transforms/Utils/AddDiscriminators.cpp | 4 ++-- llvm/test/Transforms/AddDiscriminators/call.ll | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Transforms/Utils/AddDiscriminators.cpp b/llvm/lib/Transforms/Utils/AddDiscriminators.cpp index d034905b..8b9409f 100644 --- a/llvm/lib/Transforms/Utils/AddDiscriminators.cpp +++ b/llvm/lib/Transforms/Utils/AddDiscriminators.cpp @@ -184,7 +184,7 @@ static bool addDiscriminators(Function &F) { // discriminator for this instruction. for (BasicBlock &B : F) { for (auto &I : B.getInstList()) { - if (isa(&I)) + if (isa(&I)) continue; const DILocation *DIL = I.getDebugLoc(); if (!DIL) @@ -222,7 +222,7 @@ static bool addDiscriminators(Function &F) { LocationSet CallLocations; for (auto &I : B.getInstList()) { CallInst *Current = dyn_cast(&I); - if (!Current || isa(&I)) + if (!Current || isa(&I)) continue; DILocation *CurrentDIL = Current->getDebugLoc(); diff --git a/llvm/test/Transforms/AddDiscriminators/call.ll b/llvm/test/Transforms/AddDiscriminators/call.ll index 6844a98..847a6ad 100644 --- a/llvm/test/Transforms/AddDiscriminators/call.ll +++ b/llvm/test/Transforms/AddDiscriminators/call.ll @@ -12,6 +12,10 @@ define void @_Z3foov() #0 !dbg !4 { call void @_Z3barv(), !dbg !10 ; CHECK: call void @_Z3barv(), !dbg ![[CALL0:[0-9]+]] + %a = alloca [100 x i8], align 16 + %b = bitcast [100 x i8]* %a to i8* + call void @llvm.lifetime.start(i64 100, i8* %b), !dbg !11 + call void @llvm.lifetime.end(i64 100, i8* %b), !dbg !11 call void @_Z3barv(), !dbg !11 ; CHECK: call void @_Z3barv(), !dbg ![[CALL1:[0-9]+]] call void @_Z3barv(), !dbg !12 @@ -20,6 +24,8 @@ define void @_Z3foov() #0 !dbg !4 { } declare void @_Z3barv() #1 +declare void @llvm.lifetime.start(i64, i8* nocapture) nounwind argmemonly +declare void @llvm.lifetime.end(i64, i8* nocapture) nounwind argmemonly attributes #0 = { uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "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 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "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" } -- 2.7.4