brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 45f573e Raw
86 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -passes='inferattrs,alloc-token<mode=increment>' -alloc-token-extended -S | FileCheck %s3 4target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"5 6declare ptr @malloc(i64)7declare ptr @custom_malloc(i64)8declare ptr @kmalloc(i64, i64)9 10define ptr @test_libcall() sanitize_alloc_token {11; CHECK-LABEL: define ptr @test_libcall(12; CHECK-SAME: ) #[[ATTR1:[0-9]+]] {13; CHECK-NEXT:  [[ENTRY:.*:]]14; CHECK-NEXT:    [[TMP0:%.*]] = call ptr @__alloc_token_malloc(i64 64, i64 0)15; CHECK-NEXT:    ret ptr [[TMP0]]16;17entry:18  %ptr1 = call ptr @malloc(i64 64)19  ret ptr %ptr120}21 22define ptr @test_libcall_hint() sanitize_alloc_token {23; CHECK-LABEL: define ptr @test_libcall_hint(24; CHECK-SAME: ) #[[ATTR1]] {25; CHECK-NEXT:  [[ENTRY:.*:]]26; CHECK-NEXT:    [[TMP0:%.*]] = call ptr @__alloc_token_malloc(i64 64, i64 1), !alloc_token [[META0:![0-9]+]]27; CHECK-NEXT:    ret ptr [[TMP0]]28;29entry:30  %ptr1 = call ptr @malloc(i64 64), !alloc_token !031  ret ptr %ptr132}33 34define ptr @test_nonlibcall_nohint() sanitize_alloc_token {35; CHECK-LABEL: define ptr @test_nonlibcall_nohint(36; CHECK-SAME: ) #[[ATTR1]] {37; CHECK-NEXT:  [[ENTRY:.*:]]38; CHECK-NEXT:    [[PTR1:%.*]] = call ptr @custom_malloc(i64 8)39; CHECK-NEXT:    [[PTR2:%.*]] = call ptr @kmalloc(i64 32, i64 0)40; CHECK-NEXT:    ret ptr [[PTR1]]41;42entry:43  %ptr1 = call ptr @custom_malloc(i64 8)44  %ptr2 = call ptr @kmalloc(i64 32, i64 0)45  ret ptr %ptr146}47 48define ptr @test_nonlibcall_hint() sanitize_alloc_token {49; CHECK-LABEL: define ptr @test_nonlibcall_hint(50; CHECK-SAME: ) #[[ATTR1]] {51; CHECK-NEXT:  [[ENTRY:.*:]]52; CHECK-NEXT:    [[TMP0:%.*]] = call ptr @__alloc_token_custom_malloc(i64 8, i64 2), !alloc_token [[META0]]53; CHECK-NEXT:    [[TMP1:%.*]] = call ptr @__alloc_token_kmalloc(i64 32, i64 0, i64 3), !alloc_token [[META0]]54; CHECK-NEXT:    [[TMP2:%.*]] = call ptr @__alloc_token_custom_malloc(i64 64, i64 4), !alloc_token [[META0]]55; CHECK-NEXT:    [[TMP3:%.*]] = call ptr @__alloc_token_kmalloc(i64 128, i64 2, i64 5), !alloc_token [[META0]]56; CHECK-NEXT:    ret ptr [[TMP0]]57;58entry:59  %ptr1 = call ptr @custom_malloc(i64 8), !alloc_token !060  %ptr2 = call ptr @kmalloc(i64 32, i64 0), !alloc_token !061  %ptr3 = call ptr @custom_malloc(i64 64), !alloc_token !062  %ptr4 = call ptr @kmalloc(i64 128, i64 2), !alloc_token !063  ret ptr %ptr164}65 66; Functions without sanitize_alloc_token do not get instrumented67define ptr @without_attribute() {68; CHECK-LABEL: define ptr @without_attribute() {69; CHECK-NEXT:  [[ENTRY:.*:]]70; CHECK-NEXT:    [[PTR1:%.*]] = call ptr @malloc(i64 64), !alloc_token [[META0]]71; CHECK-NEXT:    [[PTR2:%.*]] = call ptr @custom_malloc(i64 8), !alloc_token [[META0]]72; CHECK-NEXT:    [[PTR3:%.*]] = call ptr @kmalloc(i64 32, i64 0), !alloc_token [[META0]]73; CHECK-NEXT:    ret ptr [[PTR1]]74;75entry:76  %ptr1 = call ptr @malloc(i64 64), !alloc_token !077  %ptr2 = call ptr @custom_malloc(i64 8), !alloc_token !078  %ptr3 = call ptr @kmalloc(i64 32, i64 0), !alloc_token !079  ret ptr %ptr180}81 82!0 = !{!"int", i1 0}83;.84; CHECK: [[META0]] = !{!"int", i1 false}85;.86