forked from OSchip/llvm-project
[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
This commit is contained in:
parent
9fbf64139e
commit
56492f9177
|
@ -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;
|
||||
|
|
|
@ -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 }
|
||||
|
||||
|
|
Loading…
Reference in New Issue