[CodeGenPrepare] Set debug loc when widening a switch condition
authorVedant Kumar <vsk@apple.com>
Wed, 22 Aug 2018 01:23:31 +0000 (01:23 +0000)
committerVedant Kumar <vsk@apple.com>
Wed, 22 Aug 2018 01:23:31 +0000 (01:23 +0000)
Set a debug location on the cast instruction used to widen a switch
condition.

llvm-svn: 340379

llvm/lib/CodeGen/CodeGenPrepare.cpp
llvm/test/Transforms/CodeGenPrepare/X86/widen_switch.ll

index 5209ddb..37afed4 100644 (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();
index 23f120f..82c9938 100644 (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