Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
PR27938: Don't remove valid DebugLoc in Scalarizer
Added checks to make sure the Scalarizer::transferMetadata() don't remove valid debug locations from instructions. This is important as the verifier pass require that e.g. inlinable callsites have a valid debug location. https://llvm.org/bugs/show_bug.cgi?id=27938 Patch by Karl-Johan Karlsson Reviewers: dblaikie Differential Revision: http://reviews.llvm.org/D20807 llvm-svn: 272884
- Loading branch information
Patrik Hagglund
committed
Jun 16, 2016
1 parent
4798eb6
commit 0acaefa
Showing
2 changed files
with
45 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
; RUN: opt -S -march=x86 -scalarizer %s | FileCheck %s | ||
|
||
; Reproducer for pr27938 | ||
; https://llvm.org/bugs/show_bug.cgi?id=27938 | ||
|
||
define i16 @f1() !dbg !5 { | ||
ret i16 undef, !dbg !9 | ||
} | ||
|
||
define void @f2() !dbg !10 { | ||
bb1: | ||
%_tmp7 = tail call i16 @f1(), !dbg !13 | ||
; CHECK: call i16 @f1(), !dbg !13 | ||
%broadcast.splatinsert5 = insertelement <4 x i16> undef, i16 %_tmp7, i32 0 | ||
%broadcast.splat6 = shufflevector <4 x i16> %broadcast.splatinsert5, <4 x i16> undef, <4 x i32> zeroinitializer | ||
br label %vector.body | ||
|
||
vector.body: | ||
br i1 undef, label %middle.block, label %vector.body | ||
|
||
middle.block: | ||
ret void, !dbg !15 | ||
} | ||
|
||
!llvm.dbg.cu = !{!0} | ||
!llvm.module.flags = !{!3, !4} | ||
|
||
!0 = distinct !DICompileUnit(language: DW_LANG_C, file: !1, isOptimized: true, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !2, retainedTypes: !2) | ||
!1 = !DIFile(filename: "dbgloc-bug.c", directory: ".") | ||
!2 = !{} | ||
!3 = !{i32 2, !"Dwarf Version", i32 4} | ||
!4 = !{i32 2, !"Debug Info Version", i32 3} | ||
!5 = distinct !DISubprogram(name: "f1", scope: !1, file: !1, line: 9, type: !6, isLocal: false, isDefinition: true, scopeLine: 10, isOptimized: true, unit: !0, variables: !2) | ||
!6 = !DISubroutineType(types: !7) | ||
!7 = !{!8} | ||
!8 = !DIBasicType(name: "short", size: 16, align: 16, encoding: DW_ATE_signed) | ||
!9 = !DILocation(line: 11, column: 5, scope: !5) | ||
!10 = distinct !DISubprogram(name: "f2", scope: !1, file: !1, line: 14, type: !11, isLocal: false, isDefinition: true, scopeLine: 15, isOptimized: true, unit: !0, variables: !2) | ||
!11 = !DISubroutineType(types: !12) | ||
!12 = !{null} | ||
!13 = !DILocation(line: 24, column: 9, scope: !14) | ||
!14 = !DILexicalBlock(scope: !10, file: !1, line: 17, column: 5) | ||
!15 = !DILocation(line: 28, column: 1, scope: !10) |