From: Vedant Kumar Date: Wed, 22 Aug 2018 01:23:31 +0000 (+0000) Subject: [CodeGenPrepare] Set debug loc when widening a switch condition X-Git-Tag: llvmorg-8.0.0-rc1~10438 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=476068682336cc7303ff151b25efc03bb7c6ada7;p=platform%2Fupstream%2Fllvm.git [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 --- diff --git a/llvm/lib/CodeGen/CodeGenPrepare.cpp b/llvm/lib/CodeGen/CodeGenPrepare.cpp index 5209ddb..37afed4 100644 --- a/llvm/lib/CodeGen/CodeGenPrepare.cpp +++ b/llvm/lib/CodeGen/CodeGenPrepare.cpp @@ -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(); diff --git a/llvm/test/Transforms/CodeGenPrepare/X86/widen_switch.ll b/llvm/test/Transforms/CodeGenPrepare/X86/widen_switch.ll index 23f120f..82c9938 100644 --- a/llvm/test/Transforms/CodeGenPrepare/X86/widen_switch.ll +++ b/llvm/test/Transforms/CodeGenPrepare/X86/widen_switch.ll @@ -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