mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-01 00:12:50 +01:00
9f526bcf4d
Add a unnamed_addr bit to global variables and functions. This will be used to indicate that the address is not significant and therefore the constant or function can be merged with others. If an optimization pass can show that an address is not used, it can set this. Examples of things that can have this set by the FE are globals created to hold string literals and C++ constructors. Adding unnamed_addr to a non-const global should have no effect unless an optimization can transform that global into a constant. Aliases are not allowed to have unnamed_addr since I couldn't figure out any use for it. llvm-svn: 123063
19 lines
655 B
LLVM
19 lines
655 B
LLVM
; RUN: llvm-as < %s | llvm-dis | FileCheck %s
|
|
|
|
%struct.foobar = type { i32 }
|
|
|
|
@bar.d = internal unnamed_addr constant %struct.foobar zeroinitializer, align 4
|
|
@foo.d = internal constant %struct.foobar zeroinitializer, align 4
|
|
|
|
define unnamed_addr i32 @main() nounwind ssp {
|
|
entry:
|
|
%call2 = tail call i32 @zed(%struct.foobar* @foo.d, %struct.foobar* @bar.d) nounwind
|
|
ret i32 0
|
|
}
|
|
|
|
declare i32 @zed(%struct.foobar*, %struct.foobar*)
|
|
|
|
; CHECK: @bar.d = internal unnamed_addr constant %struct.foobar zeroinitializer, align 4
|
|
; CHECK: @foo.d = internal constant %struct.foobar zeroinitializer, align 4
|
|
; CHECK: define unnamed_addr i32 @main() nounwind ssp {
|