[CodeGenPrepare] Set debug loc when widening a switch condition

Set a debug location on the cast instruction used to widen a switch
condition.

llvm-svn: 340379
This commit is contained in:
Vedant Kumar 2018-08-22 01:23:31 +00:00
parent 6e9fd1377d
commit 4760686823
2 changed files with 9 additions and 0 deletions

View File

@ -5853,6 +5853,7 @@ bool CodeGenPrepare::optimizeSwitchInst(SwitchInst *SI) {
auto *ExtInst = CastInst::Create(ExtType, Cond, NewType);
ExtInst->insertBefore(SI);
ExtInst->setDebugLoc(SI->getDebugLoc());
SI->setCondition(ExtInst);
for (auto Case : SI->cases()) {
APInt NarrowConst = Case.getCaseValue()->getValue();

View File

@ -1,6 +1,7 @@
;; x86 is chosen to show the transform when 8-bit and 16-bit registers are available.
; RUN: opt < %s -codegenprepare -S -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefix=X86
; RUN: opt < %s -debugify -codegenprepare -S -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefix=DEBUG
; No change for x86 because 16-bit registers are part of the architecture.
@ -60,6 +61,13 @@ return:
; X86-NEXT: switch i32 %0, label %sw.default [
; X86-NEXT: i32 10, label %sw.bb0
; X86-NEXT: i32 131071, label %sw.bb1
; DEBUG-LABEL: @widen_switch_i17(
; DEBUG: zext i17 %trunc to i32, !dbg [[switch_loc:![0-9]+]]
; DEBUG-NEXT: switch i32 {{.*}} [
; DEBUG-NEXT: label %sw.bb0
; DEBUG-NEXT: label %sw.bb1
; DEBUG-NEXT: ], !dbg [[switch_loc]]
}
; If the switch condition is a sign-extended function argument, then the