[PATCH] D67217: [Debuginfo][Instcombiner] Do not clone dbg.declare in TryToSinkInstruction()

Alexey Lapshin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 5 02:32:58 PDT 2019


avl created this revision.
avl added reviewers: aprantl, jmorse.
avl added projects: debug-info, LLVM.
Herald added a subscriber: hiraditya.

TryToSinkInstruction() has a bug: While updating debug info for sunk instruction, it could clone dbg.declare intrinsic. That is wrong. There could be only one dbg.declare. The fix is to not clone dbg.declare intrinsic and to update it`s arguments, to not to point to sunk instruction.

before instcombine :

entry:

  %result = alloca i64, align 8
  %tmpcast = bitcast i64* %result to %struct.S1*
  %0 = bitcast i64* %result to i8*, !dbg !24
  call void @llvm.dbg.declare(metadata %struct.S1* %tmpcast, metadata !12, metadata !DIExpression()), !dbg !24
  
  %p1 = bitcast i64* %result to i32*, !dbg !35
  store i32 2, i32* %p1, align 8, !dbg !35

after instcombine:

  %result = alloca i64, align 8
  %0 = bitcast i64* %result to i8*, !dbg !24
  call void @llvm.dbg.declare(metadata i64* %result, metadata !12, metadata !DIExpression()), !dbg !24
  
  %tmpcast = bitcast i64* %result to %struct.S1*
  call void @llvm.dbg.declare(metadata %struct.S1* %tmpcast, metadata !12, metadata !DIExpression()), !dbg !24
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  cloned llvm.dbg.declare


https://reviews.llvm.org/D67217

Files:
  llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
  llvm/test/Transforms/InstCombine/do-not-clone-dbg-declare.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D67217.218867.patch
Type: text/x-patch
Size: 8091 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190905/644d1805/attachment.bin>


More information about the llvm-commits mailing list