45 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; Test for special libfuncs not automatically considered allocation functions.3;4; RUN: opt < %s -passes=inferattrs,alloc-token -S | FileCheck %s5 6target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"7 8declare {ptr, i64} @__size_returning_new(i64)9 10define ptr @test_extra_libfuncs() sanitize_alloc_token {11; CHECK-LABEL: define ptr @test_extra_libfuncs(12; CHECK-SAME: ) #[[ATTR1:[0-9]+]] {13; CHECK-NEXT: [[ENTRY:.*:]]14; CHECK-NEXT: [[TMP0:%.*]] = call { ptr, i64 } @__alloc_token___size_returning_new(i64 10, i64 2689373973731826898), !alloc_token [[META0:![0-9]+]]15; CHECK-NEXT: [[PTR1:%.*]] = extractvalue { ptr, i64 } [[TMP0]], 016; CHECK-NEXT: ret ptr [[PTR1]]17;18entry:19 %srn = call {ptr, i64} @__size_returning_new(i64 10), !alloc_token !020 %ptr1 = extractvalue {ptr, i64} %srn, 021 ret ptr %ptr122}23 24declare ptr @_Znwm(i64) nobuiltin allocsize(0)25declare ptr @_Znam(i64) nobuiltin allocsize(0)26 27define ptr @test_replaceable_new() sanitize_alloc_token {28; CHECK-LABEL: define ptr @test_replaceable_new(29; CHECK-SAME: ) #[[ATTR1]] {30; CHECK-NEXT: [[ENTRY:.*:]]31; CHECK-NEXT: [[TMP0:%.*]] = call ptr @__alloc_token__Znwm(i64 32, i64 2689373973731826898), !alloc_token [[META0]]32; CHECK-NEXT: [[TMP1:%.*]] = call ptr @__alloc_token__Znam(i64 64, i64 2689373973731826898), !alloc_token [[META0]]33; CHECK-NEXT: ret ptr [[TMP0]]34;35entry:36 %ptr1 = call ptr @_Znwm(i64 32), !alloc_token !037 %ptr2 = call ptr @_Znam(i64 64), !alloc_token !038 ret ptr %ptr139}40 41!0 = !{!"int", i1 0}42;.43; CHECK: [[META0]] = !{!"int", i1 false}44;.45