mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
6aa2c55163
This is fixing pr31761: BasicAA is deducing NoAlias on the result of the GEP if the base pointer is itself NoAlias. This is possible only if the NoAlias on the base pointer is deduced with a non-sized query: this should guarantee that the pointers are belonging to different memory allocation and that the GEP can't legally jump from one to another. Differential Revision: https://reviews.llvm.org/D29216 llvm-svn: 293293
20 lines
634 B
LLVM
20 lines
634 B
LLVM
; RUN: opt < %s -basicaa -aa-eval -print-all-alias-modref-info -disable-output 2>&1 | FileCheck %s
|
|
|
|
|
|
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-apple-macosx10.12.0"
|
|
|
|
%struct.blam = type { i32, i32 }
|
|
|
|
|
|
; CHECK-DAG: MayAlias: i32* %tmp, i32* %tmp3
|
|
|
|
define i1 @ham(%struct.blam* %arg) {
|
|
%isNull = icmp eq %struct.blam* %arg, null
|
|
%tmp = getelementptr %struct.blam, %struct.blam* %arg, i64 0, i32 0
|
|
%tmp2 = getelementptr %struct.blam, %struct.blam* %arg, i64 0, i32 1
|
|
%select = select i1 %isNull, i32* null, i32* %tmp2
|
|
%tmp3 = getelementptr i32, i32* %select, i32 -1
|
|
ret i1 true
|
|
}
|