mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
c4eafd24f2
Check accessors of `MDLocation`, and change them to `cast<>` down to the right types. Also add type-safe factory functions. All the callers that handle broken code need to use the new versions of the accessors (`getRawScope()` instead of `getScope()`) that still return `Metadata*`. This is also necessary for things like `MDNodeKeyImpl<MDLocation>` (in LLVMContextImpl.h) that need to unique the nodes when their operands might still be forward references of the wrong type. In the `Value` hierarchy, consumers that handle broken code use `getOperand()` directly. However, debug info nodes have a ton of operands, and their order (even their existence) isn't stable yet. It's safer and more maintainable to add an explicit "raw" accessor on the class itself. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@233322 91177308-0d34-0410-b5e6-96231b3b80d8
21 lines
535 B
LLVM
21 lines
535 B
LLVM
; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s
|
|
; RUN: verify-uselistorder %s
|
|
|
|
; CHECK: @test
|
|
; CHECK: ret void, !bar !1, !foo !0
|
|
define void @test() {
|
|
add i32 2, 1, !bar !0
|
|
add i32 1, 2, !foo !1
|
|
call void @llvm.dbg.func.start(metadata !"foo")
|
|
extractvalue {{i32, i32}, i32} undef, 0, 1, !foo !0
|
|
ret void, !foo !0, !bar !1
|
|
}
|
|
|
|
!0 = !MDLocation(line: 662302, column: 26, scope: !1)
|
|
!1 = !MDSubprogram(name: "foo")
|
|
|
|
declare void @llvm.dbg.func.start(metadata) nounwind readnone
|
|
|
|
!foo = !{ !0 }
|
|
!bar = !{ !1 }
|