From 56492f9177e57b383d54366f93d77595ee80fd78 Mon Sep 17 00:00:00 2001 From: Vedant Kumar Date: Wed, 21 Feb 2018 01:55:33 +0000 Subject: [PATCH] [BDCE] Salvage debug info from dying insts This results in 15 additional unique source variables in a stage2 build of FileCheck (at '-Os -g'), with a negligible increase in the size of the .debug_loc section. llvm-svn: 325660 --- llvm/lib/Transforms/Scalar/BDCE.cpp | 2 ++ llvm/test/Transforms/BDCE/basic.ll | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/llvm/lib/Transforms/Scalar/BDCE.cpp b/llvm/lib/Transforms/Scalar/BDCE.cpp index 851efa0..8a6f797 100644 --- a/llvm/lib/Transforms/Scalar/BDCE.cpp +++ b/llvm/lib/Transforms/Scalar/BDCE.cpp @@ -26,6 +26,7 @@ #include "llvm/Support/Debug.h" #include "llvm/Support/raw_ostream.h" #include "llvm/Transforms/Scalar.h" +#include "llvm/Transforms/Utils/Local.h" using namespace llvm; #define DEBUG_TYPE "bdce" @@ -114,6 +115,7 @@ static bool bitTrackingDCE(Function &F, DemandedBits &DB) { if (!DB.isInstructionDead(&I)) continue; + salvageDebugInfo(I); Worklist.push_back(&I); I.dropAllReferences(); Changed = true; diff --git a/llvm/test/Transforms/BDCE/basic.ll b/llvm/test/Transforms/BDCE/basic.ll index 6132c5d..1e40025 100644 --- a/llvm/test/Transforms/BDCE/basic.ll +++ b/llvm/test/Transforms/BDCE/basic.ll @@ -1,5 +1,6 @@ ; RUN: opt -S -bdce -instsimplify < %s | FileCheck %s ; RUN: opt -S -instsimplify < %s | FileCheck %s -check-prefix=CHECK-IO +; RUN: opt -S -debugify -bdce < %s | FileCheck %s -check-prefix=DEBUGIFY target datalayout = "E-m:e-i64:64-n32:64" target triple = "powerpc64-unknown-linux-gnu" @@ -381,6 +382,16 @@ entry: ; CHECK: ret i16 } +; DEBUGIFY-LABEL: @tar9 +define signext i16 @tar9(i32 signext %x) #0 { +entry: + %call = tail call signext i32 @foo(i32 signext 5) #0 + %and = and i32 %call, 33554432 +; DEBUGIFY: call void @llvm.dbg.value(metadata i32 %call, metadata {{.*}}, metadata !DIExpression(DW_OP_constu, 33554432, DW_OP_and, DW_OP_stack_value)) + %cast = trunc i32 %call to i16 + ret i16 %cast +} + attributes #0 = { nounwind readnone } attributes #1 = { nounwind } -- 2.7.4