llvm/test/Analysis/BasicAA/pr31761.ll
Mehdi Amini 887da0d8e8 Fix BasicAA incorrect assumption on GEP
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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293293 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-27 16:12:22 +00:00

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
}