1*9880d681SAndroid Build Coastguard Worker; This testcase ensures that CFL AA handles malloc and free in a sound and precise manner 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -disable-basicaa -cfl-steens-aa -aa-eval -print-no-aliases -disable-output 2>&1 | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -aa-pipeline=cfl-steens-aa -passes=aa-eval -print-no-aliases -disable-output 2>&1 | FileCheck %s 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Workerdeclare noalias i8* @malloc(i64) 7*9880d681SAndroid Build Coastguard Workerdeclare noalias i8* @calloc(i64, i64) 8*9880d681SAndroid Build Coastguard Workerdeclare void @free(i8* nocapture) 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker; CHECK: Function: test_malloc 11*9880d681SAndroid Build Coastguard Worker; CHECK: NoAlias: i8* %p, i8* %q 12*9880d681SAndroid Build Coastguard Workerdefine void @test_malloc(i8* %p) { 13*9880d681SAndroid Build Coastguard Worker %q = call i8* @malloc(i64 4) 14*9880d681SAndroid Build Coastguard Worker ret void 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker; CHECK: Function: test_calloc 18*9880d681SAndroid Build Coastguard Worker; CHECK: NoAlias: i8* %p, i8* %q 19*9880d681SAndroid Build Coastguard Workerdefine void @test_calloc(i8* %p) { 20*9880d681SAndroid Build Coastguard Worker %q = call i8* @calloc(i64 2, i64 4) 21*9880d681SAndroid Build Coastguard Worker ret void 22*9880d681SAndroid Build Coastguard Worker} 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker; CHECK: Function: test_free 25*9880d681SAndroid Build Coastguard Worker; CHECK: NoAlias: i8* %p, i8* %q 26*9880d681SAndroid Build Coastguard Workerdefine void @test_free(i8* %p) { 27*9880d681SAndroid Build Coastguard Worker %q = alloca i8, align 4 28*9880d681SAndroid Build Coastguard Worker call void @free(i8* %q) 29*9880d681SAndroid Build Coastguard Worker ret void 30*9880d681SAndroid Build Coastguard Worker} 31