mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-25 13:24:46 +00:00
Use address-taken to disambiguate global variable and indirect memops.
Major steps include: 1). introduces a not-addr-taken bit-field in GlobalVariable 2). GlobalOpt pass sets "not-address-taken" if it proves a global varirable dosen't have its address taken. 3). AA use this info for disambiguation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193251 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
; RUN: opt < %s -globalopt -S | grep "@X = internal unnamed_addr global i32"
|
||||
; RUN: opt < %s -globalopt -S | grep "@X = internal unnamed_addr global notaddrtaken i32"
|
||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
|
||||
target triple = "i386-apple-darwin7"
|
||||
@X = internal global i32* null ; <i32**> [#uses=2]
|
||||
|
@@ -8,7 +8,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3
|
||||
target triple = "x86_64-apple-darwin10.0"
|
||||
|
||||
@TOP = internal global i64* null ; <i64**> [#uses=2]
|
||||
; CHECK: @TOP = internal unnamed_addr global i64* null
|
||||
; CHECK: @TOP = internal unnamed_addr global notaddrtaken i64* null
|
||||
@channelColumns = internal global i64 0 ; <i64*> [#uses=2]
|
||||
|
||||
; Derived from @DescribeChannel() in yacr2
|
||||
|
@@ -3,8 +3,8 @@
|
||||
@GV1 = internal global i64 1
|
||||
@GV2 = internal global i32 0
|
||||
|
||||
; CHECK: @GV1 = internal unnamed_addr constant i64 1
|
||||
; CHECK: @GV2 = internal unnamed_addr global i32 0
|
||||
; CHECK: @GV1 = internal unnamed_addr constant notaddrtaken i64 1
|
||||
; CHECK: @GV2 = internal unnamed_addr global notaddrtaken i32 0
|
||||
|
||||
define void @test1() {
|
||||
entry:
|
||||
|
@@ -1,5 +1,5 @@
|
||||
; RUN: opt < %s -globalopt -S > %t
|
||||
; RUN: grep "@Y = internal unnamed_addr global \[3 x [%]struct.X\] zeroinitializer" %t
|
||||
; RUN: grep "@Y = internal unnamed_addr global notaddrtaken \[3 x [%]struct.X\] zeroinitializer" %t
|
||||
; RUN: grep load %t | count 6
|
||||
; RUN: grep "add i32 [%]a, [%]b" %t | count 3
|
||||
|
||||
|
@@ -4,7 +4,7 @@
|
||||
@G = internal addrspace(1) global i32 0
|
||||
; CHECK: @G
|
||||
; CHECK: addrspace(1)
|
||||
; CHECK: global i1 false
|
||||
; CHECK: global notaddrtaken i1 false
|
||||
|
||||
define void @set1() {
|
||||
store i32 0, i32 addrspace(1)* @G
|
||||
|
@@ -6,10 +6,10 @@
|
||||
@d = internal constant [4 x i8] c"foo\00", align 1
|
||||
@e = linkonce_odr global i32 0
|
||||
|
||||
; CHECK: @a = internal global i32 0, align 4
|
||||
; CHECK: @a = internal global notaddrtaken i32 0, align 4
|
||||
; CHECK: @b = internal global i32 0, align 4
|
||||
; CHECK: @c = internal unnamed_addr global i32 0, align 4
|
||||
; CHECK: @d = internal unnamed_addr constant [4 x i8] c"foo\00", align 1
|
||||
; CHECK: @c = internal unnamed_addr global notaddrtaken i32 0, align 4
|
||||
; CHECK: @d = internal unnamed_addr constant notaddrtaken [4 x i8] c"foo\00", align 1
|
||||
; CHECK: @e = linkonce_odr global i32 0
|
||||
|
||||
define i32 @get_e() {
|
||||
|
Reference in New Issue
Block a user