brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · 0dc4ba0 Raw
94 lines · c
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py2// RUN: %clang_cc1 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s3 4// CHECK-LABEL: @test1(5// CHECK-NEXT:  entry:6// CHECK-NEXT:    [[A_ADDR:%.*]] = alloca ptr, align 87// CHECK-NEXT:    store ptr [[A:%.*]], ptr [[A_ADDR]], align 88// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 89// CHECK-NEXT:    call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[TMP0]], i64 10) ]10// CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr [[A_ADDR]], align 811// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i64 012// CHECK-NEXT:    [[TMP2:%.*]] = load i32, ptr [[ARRAYIDX]], align 413// CHECK-NEXT:    ret i32 [[TMP2]]14//15int test1(int *a) {16  __builtin_assume_dereferenceable(a, 10);17  return a[0];18}19 20// CHECK-LABEL: @test2(21// CHECK-NEXT:  entry:22// CHECK-NEXT:    [[A_ADDR:%.*]] = alloca ptr, align 823// CHECK-NEXT:    store ptr [[A:%.*]], ptr [[A_ADDR]], align 824// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 825// CHECK-NEXT:    call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[TMP0]], i64 32) ]26// CHECK-NEXT:    [[TMP1:%.*]] = load ptr, ptr [[A_ADDR]], align 827// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[TMP1]], i64 028// CHECK-NEXT:    [[TMP2:%.*]] = load i32, ptr [[ARRAYIDX]], align 429// CHECK-NEXT:    ret i32 [[TMP2]]30//31int test2(int *a) {32  __builtin_assume_dereferenceable(a, 32ull);33  return a[0];34}35 36// CHECK-LABEL: @test3(37// CHECK-NEXT:  entry:38// CHECK-NEXT:    [[A_ADDR:%.*]] = alloca ptr, align 839// CHECK-NEXT:    [[N_ADDR:%.*]] = alloca i32, align 440// CHECK-NEXT:    store ptr [[A:%.*]], ptr [[A_ADDR]], align 841// CHECK-NEXT:    store i32 [[N:%.*]], ptr [[N_ADDR]], align 442// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 843// CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[N_ADDR]], align 444// CHECK-NEXT:    [[CONV:%.*]] = sext i32 [[TMP1]] to i6445// CHECK-NEXT:    call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[TMP0]], i64 [[CONV]]) ]46// CHECK-NEXT:    [[TMP2:%.*]] = load ptr, ptr [[A_ADDR]], align 847// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i64 048// CHECK-NEXT:    [[TMP3:%.*]] = load i32, ptr [[ARRAYIDX]], align 449// CHECK-NEXT:    ret i32 [[TMP3]]50//51int test3(int *a, int n) {52  __builtin_assume_dereferenceable(a, n);53  return a[0];54}55 56// CHECK-LABEL: @test4(57// CHECK-NEXT:  entry:58// CHECK-NEXT:    [[A_ADDR:%.*]] = alloca ptr, align 859// CHECK-NEXT:    [[N_ADDR:%.*]] = alloca i64, align 860// CHECK-NEXT:    store ptr [[A:%.*]], ptr [[A_ADDR]], align 861// CHECK-NEXT:    store i64 [[N:%.*]], ptr [[N_ADDR]], align 862// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 863// CHECK-NEXT:    [[TMP1:%.*]] = load i64, ptr [[N_ADDR]], align 864// CHECK-NEXT:    call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[TMP0]], i64 [[TMP1]]) ]65// CHECK-NEXT:    [[TMP2:%.*]] = load ptr, ptr [[A_ADDR]], align 866// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i64 067// CHECK-NEXT:    [[TMP3:%.*]] = load i32, ptr [[ARRAYIDX]], align 468// CHECK-NEXT:    ret i32 [[TMP3]]69//70int test4(int *a, unsigned long long n) {71  __builtin_assume_dereferenceable(a, n);72  return a[0];73}74 75// CHECK-LABEL: @test5(76// CHECK-NEXT:  entry:77// CHECK-NEXT:    [[A_ADDR:%.*]] = alloca ptr, align 878// CHECK-NEXT:    [[N_ADDR:%.*]] = alloca float, align 479// CHECK-NEXT:    store ptr [[A:%.*]], ptr [[A_ADDR]], align 880// CHECK-NEXT:    store float [[N:%.*]], ptr [[N_ADDR]], align 481// CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[A_ADDR]], align 882// CHECK-NEXT:    [[TMP1:%.*]] = load float, ptr [[N_ADDR]], align 483// CHECK-NEXT:    [[CONV:%.*]] = fptoui float [[TMP1]] to i6484// CHECK-NEXT:    call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[TMP0]], i64 [[CONV]]) ]85// CHECK-NEXT:    [[TMP2:%.*]] = load ptr, ptr [[A_ADDR]], align 886// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[TMP2]], i64 087// CHECK-NEXT:    [[TMP3:%.*]] = load i32, ptr [[ARRAYIDX]], align 488// CHECK-NEXT:    ret i32 [[TMP3]]89//90int test5(int *a, float n) {91  __builtin_assume_dereferenceable(a, n);92  return a[0];93}94