; RUN: opt -aa-pipeline=basic-aa -passes=lint -disable-output < %s 2>&1 | FileCheck %s
target datalayout = "e-p:64:64:64"

declare fastcc void @bar()
declare void @llvm.stackrestore(ptr)
declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture, i64, i1) nounwind
declare void @llvm.memcpy.inline.p0.p0.i64(ptr nocapture, ptr nocapture, i64, i1) nounwind
declare void @llvm.memset.p0.i8.i64(ptr nocapture, i8, i64, i1) nounwind
declare void @llvm.memset.inline.p0.i8.i64(ptr nocapture, i8, i64, i1) nounwind
declare void @has_sret(ptr sret(i8) %p)
declare void @has_noaliases(ptr noalias %p, ptr %q)
declare void @one_arg(i32)

@CG = constant i32 7
@CG2 = constant i32 7
@E = external global i8

define i32 @foo() noreturn {
  %buf = alloca i8
  %buf2 = alloca {i8, i8}, align 2
; CHECK: Caller and callee calling convention differ
  call void @bar()
; CHECK: Null pointer dereference
  store i32 0, ptr null
; CHECK: Null pointer dereference
  %t = load i32, ptr null
; CHECK: Undef pointer dereference
  store i32 0, ptr undef
; CHECK: Undef pointer dereference
  %u = load i32, ptr undef
; CHECK: All-ones pointer dereference
  store i32 0, ptr inttoptr (i64 -1 to ptr)
; CHECK: Address one pointer dereference
  store i32 0, ptr inttoptr (i64 1 to ptr)
; CHECK: Memory reference address is misaligned
  store i8 0, ptr %buf, align 2
; CHECK: Memory reference address is misaligned
  %gep = getelementptr {i8, i8}, ptr %buf2, i32 0, i32 1
  store i8 0, ptr %gep, align 2
; CHECK: Division by zero
  %sd = sdiv i32 2, 0
; CHECK: Division by zero
  %ud = udiv i32 2, 0
; CHECK: Division by zero
  %sr = srem i32 2, 0
; CHECK: Division by zero
  %ur = urem i32 2, 0
; CHECK: extractelement index out of range
  %ee = extractelement <4 x i32> zeroinitializer, i32 4
; CHECK: insertelement index out of range
  %ie = insertelement <4 x i32> zeroinitializer, i32 0, i32 4
; CHECK: Shift count out of range
  %r = lshr i32 0, 32
; CHECK: Shift count out of range
  %q = ashr i32 0, 32
; CHECK: Shift count out of range
  %l = shl i32 0, 32
; CHECK: xor(undef, undef)
  %xx = xor i32 undef, undef
; CHECK: sub(undef, undef)
  %xs = sub i32 undef, undef

; CHECK: Write to read-only memory
  store i32 8, ptr @CG
; CHECK: Write to text section
  store i32 8, ptr @foo
; CHECK: Load from block address
  %lb = load i32, ptr blockaddress(@foo, %next)
; CHECK: Call to block address
  call void() blockaddress(@foo, %next)()
; CHECK: Undefined behavior: Null pointer dereference
  call void @llvm.stackrestore(ptr null)
; CHECK: Undefined behavior: Null pointer dereference
  call void @has_sret(ptr sret(i8) null)
; CHECK: Unusual: noalias argument aliases another argument
  call void @has_noaliases(ptr @CG, ptr @CG)
; CHECK: Call argument count mismatches callee argument count
  call void (i32, i32) @one_arg(i32 0, i32 0)
; CHECK: Call argument count mismatches callee argument count
  call void () @one_arg()
; CHECK: Call argument type mismatches callee parameter type
  call void (float) @one_arg(float 0.0)

; CHECK: Write to read-only memory
call void @llvm.memcpy.p0.p0.i64(ptr @CG, ptr @CG2, i64 1, i1 0)
; CHECK: Write to read-only memory
call void @llvm.memcpy.inline.p0.p0.i64(ptr @CG, ptr @CG2, i64 1, i1 0)
; CHECK: Unusual: noalias argument aliases another argument
call void @llvm.memcpy.p0.p0.i64(ptr @CG, ptr @CG, i64 1, i1 0)

; CHECK: Write to read-only memory
call void @llvm.memset.p0.i8.i64(ptr @CG, i8 1, i64 1, i1 0)
; CHECK: Write to read-only memory
call void @llvm.memset.inline.p0.i8.i64(ptr @CG, i8 1, i64 1, i1 0)

; CHECK: Undefined behavior: Buffer overflow
  store i16 0, ptr %buf
; CHECK: Undefined behavior: Buffer overflow
  %inner = getelementptr {i8, i8}, ptr %buf2, i32 0, i32 1
  store i16 0, ptr %inner
; CHECK: Undefined behavior: Buffer overflow
  %before = getelementptr i8, ptr %buf, i32 -1
  store i16 0, ptr %before

  br label %next

next:
; CHECK: Static alloca outside of entry block
  %a = alloca i32
; CHECK: Return statement in function with noreturn attribute
  ret i32 0

foo:
; CHECK-NOT: Undefined behavior: Buffer overflow
; CHECK-NOT: Memory reference address is misaligned
  store i64 0, ptr @E
  %z = add i32 0, 0
; CHECK: unreachable immediately preceded by instruction without side effects
  unreachable
}

; CHECK: Unnamed function with non-local linkage
define void @0() nounwind {
  ret void
}

; CHECK: Undefined behavior: Branch to non-blockaddress
define void @use_indbr() {
  indirectbr ptr @foo, [label %block]
block:
  unreachable
}

; CHECK: Undefined behavior: Call with "tail" keyword references alloca
declare void @tailcallee(ptr)
define void @use_tail(ptr %valist) {
  %t = alloca i8
  tail call void @tailcallee(ptr %t)
  ret void
}

; CHECK: Unusual: Returning alloca value
define ptr @return_local(i32 %n, i32 %m) {
  %t = alloca i8, i32 %n
  %s = getelementptr i8, ptr %t, i32 %m
  ret ptr %s
}

; CHECK: Unusual: Returning alloca value
define ptr @return_obscured_local() {
entry:
  %retval = alloca ptr
  %x = alloca i32
  store ptr %x, ptr %retval
  br label %next
next:
  %t0 = load ptr, ptr %retval
  %t1 = insertvalue { i32, i32, ptr } zeroinitializer, ptr %t0, 2
  %t2 = extractvalue { i32, i32, ptr } %t1, 2
  br label %exit
exit:
  %t3 = phi ptr [ %t2, %next ]
  %t5 = ptrtoint ptr %t3 to i64
  %t6 = add i64 %t5, 0
  %t7 = inttoptr i64 %t6 to ptr
  ret ptr %t7
}

; CHECK: Undefined behavior: Undef pointer dereference
define ptr @self_reference() {
entry:
  unreachable
exit:
  %t3 = phi ptr [ %t4, %exit ]
  %t4 = bitcast ptr %t3 to ptr
  %x = load volatile i32, ptr %t3
  br label %exit
}

; CHECK: Call return type mismatches callee return type
%struct = type { double, double }
declare i32 @nonstruct_callee() nounwind
define void @struct_caller() nounwind {
entry:
  call %struct @foo()

  ; CHECK: Undefined behavior: indirectbr with no destinations
  indirectbr ptr null, []
}

define i32 @memcpy_inline_same_address() noreturn {
  %buf = alloca i64, align 1
  ; CHECK: Unusual: noalias argument aliases another argument
  call void @llvm.memcpy.inline.p0.p0.i64(ptr %buf, ptr %buf, i64 1, i1 false)
  unreachable
}
