mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-23 12:40:38 +00:00
11ab0c3a5d
An oddity of the .ll syntax is that the "@var = " in @var = global i32 42 is optional. Writing just global i32 42 is equivalent to @0 = global i32 42 This means that there is a pretty big First set at the top level. The current implementation maintains it manually. I was trying to refactor it, but then started wondering why keep it a all. I personally find the above syntax confusing. It looks like something is missing. This patch removes the feature and simplifies the parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@269096 91177308-0d34-0410-b5e6-96231b3b80d8
21 lines
872 B
LLVM
21 lines
872 B
LLVM
; RUN: llvm-as < %s | llvm-dis > %t1.ll
|
|
; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
|
|
; RUN: diff %t1.ll %t2.ll
|
|
|
|
@MyVar = external global i32 ; <i32*> [#uses=1]
|
|
@MyIntList = external global { i32*, i32 } ; <{ \2*, i32 }*> [#uses=1]
|
|
@0 = external global i32 ; <i32*>:0 [#uses=0]
|
|
@AConst = constant i32 123 ; <i32*> [#uses=0]
|
|
@AString = constant [4 x i8] c"test" ; <[4 x i8]*> [#uses=0]
|
|
@ZeroInit = global { [100 x i32], [40 x float] } zeroinitializer ; <{ [100 x i32], [40 x float] }*> [#uses=0]
|
|
|
|
define i32 @foo(i32 %blah) {
|
|
store i32 5, i32* @MyVar
|
|
%idx = getelementptr { i32*, i32 }, { i32*, i32 }* @MyIntList, i64 0, i32 1 ; <i32*> [#uses=1]
|
|
store i32 12, i32* %idx
|
|
ret i32 %blah
|
|
}
|
|
|
|
@1 = hidden dllexport global i32 42
|
|
@2 = dllexport global i32 42
|