This reapplication changes debug intrinsic declaration removal to only take
place when printing final IR, so that the processing format of the Module
does not affect the output.
This reverts commit d128448efd.
65 lines
2.2 KiB
LLVM
65 lines
2.2 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt -S -passes=verify,iroutliner -ir-outlining-no-cost < %s | FileCheck %s
|
|
|
|
; This test makes sure that we do not include debug statements in outlined
|
|
; functions.
|
|
|
|
define void @outline_dbg1() {
|
|
; CHECK-LABEL: @outline_dbg1(
|
|
; CHECK-NEXT: entry:
|
|
; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4
|
|
; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4
|
|
; CHECK-NEXT: [[C:%.*]] = alloca i32, align 4
|
|
; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[C]])
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
entry:
|
|
%a = alloca i32, align 4
|
|
%b = alloca i32, align 4
|
|
%c = alloca i32, align 4
|
|
store i32 2, ptr %a, align 4
|
|
store i32 3, ptr %b, align 4
|
|
call void @llvm.dbg.value(metadata i64 0, metadata !14, metadata !DIExpression()), !dbg !14
|
|
store i32 4, ptr %c, align 4
|
|
%al = load i32, ptr %a
|
|
%bl = load i32, ptr %b
|
|
%cl = load i32, ptr %c
|
|
ret void
|
|
}
|
|
|
|
declare void @llvm.dbg.value(metadata, metadata, metadata)
|
|
|
|
define void @outline_dbg2() {
|
|
; CHECK-LABEL: @outline_dbg2(
|
|
; CHECK-NEXT: entry:
|
|
; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4
|
|
; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4
|
|
; CHECK-NEXT: [[C:%.*]] = alloca i32, align 4
|
|
; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[C]])
|
|
; CHECK-NEXT: ret void
|
|
;
|
|
entry:
|
|
%a = alloca i32, align 4
|
|
%b = alloca i32, align 4
|
|
%c = alloca i32, align 4
|
|
store i32 2, ptr %a, align 4
|
|
store i32 3, ptr %b, align 4
|
|
store i32 4, ptr %c, align 4
|
|
%al = load i32, ptr %a
|
|
%bl = load i32, ptr %b
|
|
%cl = load i32, ptr %c
|
|
ret void
|
|
}
|
|
|
|
; CHECK: entry_to_outline:
|
|
|
|
!0 = !DIFile(filename: "foo.c", directory: "/tmp")
|
|
!1 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
|
|
!5 = distinct !DICompileUnit(language: DW_LANG_C, file: !0, producer: "My Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !6, retainedTypes: !6, globals: !7)
|
|
!6 = !{}
|
|
!7 = !{}
|
|
!11 = distinct !DISubprogram(name: "func_5", scope: !0, file: !0, line: 117, type: !12, isLocal: true, isDefinition: true, scopeLine: 118, isOptimized: false, unit: !5, retainedNodes: !6)
|
|
!12 = !DISubroutineType(types: !13)
|
|
!13 = !{}
|
|
!14 = !DILocalVariable(name: "p_6", arg: 1, scope: !11, line: 117, type: !1)
|