| ; Test that all supported module flags are retrieved correctly. |
| ; |
| ; RUN: opt < %s -passes='inferattrs,alloc-token' -S | FileCheck %s --check-prefixes=CHECK,DEFAULT |
| ; RUN: opt < %s -passes='inferattrs,alloc-token' -alloc-token-max=2 -alloc-token-fast-abi=0 -alloc-token-extended=0 -S | FileCheck %s --check-prefixes=CHECK,OVERRIDE |
| |
| target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" |
| |
| declare ptr @_Znwm(i64) |
| declare ptr @malloc(i64) |
| declare ptr @my_malloc(i64) |
| |
| define void @test() sanitize_alloc_token { |
| ; CHECK-LABEL: define void @test( |
| ; DEFAULT: call ptr @__alloc_token_0_malloc(i64 8) |
| ; DEFAULT: call ptr @__alloc_token_1__Znwm(i64 8) |
| ; DEFAULT: call ptr @__alloc_token_2_malloc(i64 8) |
| ; DEFAULT: call ptr @__alloc_token_0_my_malloc(i64 8) |
| ; OVERRIDE: call ptr @__alloc_token_malloc(i64 8, i64 0) |
| ; OVERRIDE: call ptr @__alloc_token__Znwm(i64 8, i64 1) |
| ; OVERRIDE: call ptr @__alloc_token_malloc(i64 8, i64 0) |
| ; OVERRIDE: call ptr @my_malloc(i64 8) |
| %1 = call ptr @malloc(i64 8) |
| %2 = call ptr @_Znwm(i64 8) |
| %3 = call ptr @malloc(i64 8) |
| %4 = call ptr @my_malloc(i64 8), !alloc_token !0 |
| ret void |
| } |
| |
| !0 = !{!"int", i1 0} |
| |
| !llvm.module.flags = !{!1, !2, !3, !4} |
| !1 = !{i32 1, !"alloc-token-mode", !"increment"} |
| !2 = !{i32 1, !"alloc-token-max", i64 3} |
| !3 = !{i32 1, !"alloc-token-fast-abi", i64 1} |
| !4 = !{i32 1, !"alloc-token-extended", i64 1} |