mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
b3146480a1
Summary: While this does not change any final output, this will greatly simplify ixing unwind destination mismatches in CFGStackify (D48345), because we have to create some new registers there. Reviewers: dschuff Subscribers: sunfish, sbc100, jgravelle-google, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D59652 llvm-svn: 357342
48 lines
2.1 KiB
LLVM
48 lines
2.1 KiB
LLVM
; RUN: llc %s -stop-after wasm-cfg-stackify -o - | FileCheck %s
|
|
|
|
; The test ensures "block" instruction is not inserted in the middle of a group
|
|
; of instructions that form a stackified expression when DBG_VALUE is present
|
|
; among them.
|
|
|
|
; CHECK: body:
|
|
; CHECK: BLOCK
|
|
; <-- Stackified expression starts
|
|
; CHECK-NEXT: I32_WRAP_I64
|
|
; CHECK-NEXT: DBG_VALUE
|
|
; <-- BLOCK should NOT be placed here!
|
|
; CHECK-NEXT: BR_UNLESS
|
|
; <-- Stackified expression ends
|
|
|
|
target triple = "wasm32-unknown-unknown"
|
|
|
|
define void @foo(i64 %arg) {
|
|
start:
|
|
%val = trunc i64 %arg to i32
|
|
%cmp = icmp eq i32 %val, 0
|
|
call void @llvm.dbg.value(metadata i32 %val, metadata !46, metadata !DIExpression()), !dbg !105
|
|
br i1 %cmp, label %bb2, label %bb1
|
|
bb1: ; preds = %start
|
|
call void @bar()
|
|
br label %bb2
|
|
bb2: ; preds = %bb1, start
|
|
ret void
|
|
}
|
|
|
|
declare void @bar()
|
|
declare void @llvm.dbg.value(metadata, metadata, metadata)
|
|
|
|
!llvm.dbg.cu = !{!0}
|
|
!llvm.module.flags = !{!33}
|
|
!0 = distinct !DICompileUnit(language: DW_LANG_Rust, file: !6, producer: "clang LLVM (rustc version 1.30.0-dev)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !2)
|
|
!2 = !{}
|
|
!6 = !DIFile(filename: "<unknown>", directory: "")
|
|
!22 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "&str", file: !6, size: 64, align: 32, elements: !{}, identifier: "111094d970b097647de579f9c509ef08")
|
|
!33 = !{i32 2, !"Debug Info Version", i32 3}
|
|
!35 = distinct !DILexicalBlock(scope: !37, file: !6, line: 357, column: 8)
|
|
!37 = distinct !DISubprogram(name: "foobar", linkageName: "_fooba", scope: !38, file: !6, line: 353, type: !39, isLocal: true, isDefinition: true, scopeLine: 353, flags: DIFlagPrototyped, isOptimized: true, unit: !0, templateParams: !2, retainedNodes: !42)
|
|
!38 = !DINamespace(name: "ptr", scope: null)
|
|
!39 = !DISubroutineType(types: !2)
|
|
!42 = !{!46}
|
|
!46 = !DILocalVariable(name: "z", scope: !35, file: !6, line: 357, type: !22, align: 4)
|
|
!105 = !DILocation(line: 357, column: 12, scope: !35)
|