llvm.org GIT mirror llvm / release_50 test / Analysis / BasicAA / global-size.ll
release_50

Tree @release_50 (Download .tar.gz)

global-size.ll @release_50

4e4f731
 
 
135bf42
74c996c
4e4f731
cd38485
4e4f731
81877ad
135bf42
7c9c6ed
dcd188d
7c9c6ed
135bf42
dcd188d
135bf42
4e4f731
 
74c996c
 
 
 
 
7c9c6ed
74c996c
7c9c6ed
74c996c
 
 
 
895ace0
 
 
 
81877ad
895ace0
 
198d8ba
895ace0
198d8ba
895ace0
7c9c6ed
895ace0
 
7c9c6ed
895ace0
 
 
 
 
 
 
; A store or load cannot alias a global if the accessed amount is larger then
; the global.

; RUN: opt < %s -basicaa -gvn -S | FileCheck %s
target datalayout = "E-p:64:64:64-p1:16:16:16-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"

@B = global i16 8

; CHECK-LABEL: @test1(
define i16 @test1(i32* %P) {
        %X = load i16, i16* @B
        store i32 7, i32* %P
        %Y = load i16, i16* @B
        %Z = sub i16 %Y, %X
        ret i16 %Z
; CHECK: ret i16 0
}

@B_as1 = addrspace(1) global i16 8

define i16 @test1_as1(i32 addrspace(1)* %P) {
; CHECK-LABEL: @test1_as1(
; CHECK: ret i16 0
  %X = load i16, i16 addrspace(1)* @B_as1
  store i32 7, i32 addrspace(1)* %P
  %Y = load i16, i16 addrspace(1)* @B_as1
  %Z = sub i16 %Y, %X
  ret i16 %Z
}

; Cannot know anything about the size of this global.
; rdar://8813415
@window = external global [0 x i8]

; CHECK-LABEL: @test2(
define i8 @test2(i32 %tmp79, i32 %w.2, i32 %indvar89) nounwind {
  %tmp92 = add i32 %tmp79, %indvar89
  %arrayidx412 = getelementptr [0 x i8], [0 x i8]* @window, i32 0, i32 %tmp92
  %tmp93 = add i32 %w.2, %indvar89
  %arrayidx416 = getelementptr [0 x i8], [0 x i8]* @window, i32 0, i32 %tmp93

  %A = load i8, i8* %arrayidx412, align 1
  store i8 4, i8* %arrayidx416, align 1

  %B = load i8, i8* %arrayidx412, align 1
  %C = sub i8 %A, %B
  ret i8 %C

; CHECK: %B = load i8
; CHECK: ret i8 %C
}