| ; RUN: opt %s -deadargelim -S | FileCheck %s | |
| @block_addr = global i8* blockaddress(@varargs_func, %l1) | |
| ; CHECK: @block_addr = global i8* blockaddress(@varargs_func, %l1) | |
| ; This function is referenced by a "blockaddress" constant but it is | |
| ; not address-taken, so the pass should be able to remove its unused | |
| ; varargs. | |
| define internal i32 @varargs_func(i8* %addr, ...) { | |
| indirectbr i8* %addr, [ label %l1, label %l2 ] | |
| l1: | |
| ret i32 1 | |
| l2: | |
| ret i32 2 | |
| } | |
| ; CHECK: define internal i32 @varargs_func(i8* %addr) { | |
| define i32 @caller(i8* %addr) { | |
| %r = call i32 (i8*, ...) @varargs_func(i8* %addr) | |
| ret i32 %r | |
| } | |
| ; CHECK: %r = call i32 @varargs_func(i8* %addr) |