mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
ccd1035ad4
While the subprogram map cache used by Dead Argument Elimination works there, I made a mistake when reusing it for Argument Promotion in r212128 because ArgPromo may transform functions more than once whereas DAE transforms each function only once, removing all the dead arguments in one go. To address this, ensure that the map is updated after each argument promotion. In retrospect it might be a little wasteful to create a map of all subprograms when only handling a single CGSCC, but the alternative is walking the debug info for each function in the CGSCC that gets updated. It's not clear to me what the right tradeoff is there, but since the current tradeoff seems to be working OK (and the code to keep things updated is very cheap), let's stick with that for now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213805 91177308-0d34-0410-b5e6-96231b3b80d8
27 lines
1.0 KiB
LLVM
27 lines
1.0 KiB
LLVM
; RUN: opt < %s -argpromotion -S | FileCheck %s
|
|
; CHECK: call void @test(i32 %
|
|
; CHECK: void (i32)* @test, {{.*}} ; [ DW_TAG_subprogram ] {{.*}} [test]
|
|
|
|
declare void @sink(i32)
|
|
|
|
define internal void @test(i32** %X) {
|
|
%1 = load i32** %X, align 8
|
|
%2 = load i32* %1, align 8
|
|
call void @sink(i32 %2)
|
|
ret void
|
|
}
|
|
|
|
define void @caller(i32** %Y) {
|
|
call void @test(i32** %Y)
|
|
ret void
|
|
}
|
|
|
|
!llvm.module.flags = !{!0}
|
|
!llvm.dbg.cu = !{!3}
|
|
|
|
!0 = metadata !{i32 2, metadata !"Debug Info Version", i32 1}
|
|
!1 = metadata !{i32 8, i32 0, metadata !2, null}
|
|
!2 = metadata !{i32 786478, null, null, metadata !"test", metadata !"test", metadata !"", i32 3, null, i1 true, i1 true, i32 0, i32 0, null, i32 256, i1 false, void (i32**)* @test, null, null, null, i32 3}
|
|
!3 = metadata !{i32 786449, null, i32 4, metadata !"clang version 3.5.0 ", i1 false, metadata !"", i32 0, null, null, metadata !4, null, null, metadata !"", i32 2} ; [ DW_TAG_compile_unit ] [/usr/local/google/home/blaikie/dev/scratch/pr20038/reduce/<stdin>] [DW_LANG_C_plus_plus]
|
|
!4 = metadata !{metadata !2}
|