brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.1 KiB · c11a69a Raw
95 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature2; REQUIRES: asserts3 4; RUN: opt -passes='assume-builder,verify' --enable-knowledge-retention --debug-counter=assume-builder-counter=5 -S %s | FileCheck %s --check-prefixes=COUNTER15; RUN: opt -passes='assume-builder,verify' --enable-knowledge-retention --debug-counter=assume-builder-counter=1-3 -S %s | FileCheck %s --check-prefixes=COUNTER26; RUN: opt -passes='assume-builder,verify' --enable-knowledge-retention --debug-counter=assume-builder-counter=2-202 -S %s | FileCheck %s --check-prefixes=COUNTER37 8target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"9 10declare void @func(ptr, ptr)11declare void @func_cold(ptr) cold willreturn nounwind12declare void @func_strbool(ptr) "no-jump-tables"13declare void @func_many(ptr) "no-jump-tables" nounwind "less-precise-fpmad" willreturn norecurse14declare void @func_argattr(ptr align 8, ptr nonnull) nounwind15declare void @func_argattr2(ptr noundef align 8, ptr noundef nonnull) nounwind16declare void @may_throw()17 18define void @test(ptr %P, ptr %P1, ptr %P2, ptr %P3) {19; COUNTER1-LABEL: define {{[^@]+}}@test20; COUNTER1-SAME: (ptr [[P:%.*]], ptr [[P1:%.*]], ptr [[P2:%.*]], ptr [[P3:%.*]]) {21; COUNTER1-NEXT:    call void @func(ptr nonnull dereferenceable(16) [[P]], ptr null)22; COUNTER1-NEXT:    call void @func(ptr dereferenceable(12) [[P1]], ptr nonnull [[P]])23; COUNTER1-NEXT:    call void @func_cold(ptr dereferenceable(12) [[P1]]) [[ATTR5:#.*]]24; COUNTER1-NEXT:    call void @func_cold(ptr dereferenceable(12) [[P1]])25; COUNTER1-NEXT:    call void @func(ptr [[P1]], ptr [[P]])26; COUNTER1-NEXT:    call void @func_strbool(ptr [[P1]])27; COUNTER1-NEXT:    call void @func(ptr dereferenceable(32) [[P]], ptr dereferenceable(8) [[P]])28; COUNTER1-NEXT:    call void @func_many(ptr align 8 [[P1]])29; COUNTER1-NEXT:    call void @llvm.assume(i1 true) [ "noundef"(ptr [[P1]]), "align"(ptr [[P1]], i64 8) ]30; COUNTER1-NEXT:    call void @func_many(ptr noundef align 8 [[P1]])31; COUNTER1-NEXT:    call void @func_argattr(ptr [[P2]], ptr [[P3]])32; COUNTER1-NEXT:    call void @func_argattr2(ptr [[P2]], ptr [[P3]])33; COUNTER1-NEXT:    call void @func(ptr nonnull [[P1]], ptr nonnull [[P]])34; COUNTER1-NEXT:    call void @func(ptr noundef nonnull [[P1]], ptr noundef nonnull [[P]])35; COUNTER1-NEXT:    ret void36;37; COUNTER2-LABEL: define {{[^@]+}}@test38; COUNTER2-SAME: (ptr [[P:%.*]], ptr [[P1:%.*]], ptr [[P2:%.*]], ptr [[P3:%.*]]) {39; COUNTER2-NEXT:    call void @func(ptr nonnull dereferenceable(16) [[P]], ptr null)40; COUNTER2-NEXT:    call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[P1]], i64 12) ]41; COUNTER2-NEXT:    call void @func(ptr dereferenceable(12) [[P1]], ptr nonnull [[P]])42; COUNTER2-NEXT:    call void @llvm.assume(i1 true) [ "cold"() ]43; COUNTER2-NEXT:    call void @func_cold(ptr dereferenceable(12) [[P1]]) [[ATTR5:#.*]]44; COUNTER2-NEXT:    call void @llvm.assume(i1 true) [ "cold"() ]45; COUNTER2-NEXT:    call void @func_cold(ptr dereferenceable(12) [[P1]])46; COUNTER2-NEXT:    call void @func(ptr [[P1]], ptr [[P]])47; COUNTER2-NEXT:    call void @func_strbool(ptr [[P1]])48; COUNTER2-NEXT:    call void @func(ptr dereferenceable(32) [[P]], ptr dereferenceable(8) [[P]])49; COUNTER2-NEXT:    call void @func_many(ptr align 8 [[P1]])50; COUNTER2-NEXT:    call void @func_many(ptr noundef align 8 [[P1]])51; COUNTER2-NEXT:    call void @func_argattr(ptr [[P2]], ptr [[P3]])52; COUNTER2-NEXT:    call void @func_argattr2(ptr [[P2]], ptr [[P3]])53; COUNTER2-NEXT:    call void @func(ptr nonnull [[P1]], ptr nonnull [[P]])54; COUNTER2-NEXT:    call void @func(ptr noundef nonnull [[P1]], ptr noundef nonnull [[P]])55; COUNTER2-NEXT:    ret void56;57; COUNTER3-LABEL: define {{[^@]+}}@test58; COUNTER3-SAME: (ptr [[P:%.*]], ptr [[P1:%.*]], ptr [[P2:%.*]], ptr [[P3:%.*]]) {59; COUNTER3-NEXT:    call void @func(ptr nonnull dereferenceable(16) [[P]], ptr null)60; COUNTER3-NEXT:    call void @func(ptr dereferenceable(12) [[P1]], ptr nonnull [[P]])61; COUNTER3-NEXT:    call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[P1]], i64 12), "cold"() ]62; COUNTER3-NEXT:    call void @func_cold(ptr dereferenceable(12) [[P1]]) [[ATTR5:#.*]]63; COUNTER3-NEXT:    call void @llvm.assume(i1 true) [ "cold"() ]64; COUNTER3-NEXT:    call void @func_cold(ptr dereferenceable(12) [[P1]])65; COUNTER3-NEXT:    call void @func(ptr [[P1]], ptr [[P]])66; COUNTER3-NEXT:    call void @func_strbool(ptr [[P1]])67; COUNTER3-NEXT:    call void @llvm.assume(i1 true) [ "dereferenceable"(ptr [[P]], i64 32) ]68; COUNTER3-NEXT:    call void @func(ptr dereferenceable(32) [[P]], ptr dereferenceable(8) [[P]])69; COUNTER3-NEXT:    call void @func_many(ptr align 8 [[P1]])70; COUNTER3-NEXT:    call void @llvm.assume(i1 true) [ "noundef"(ptr [[P1]]), "align"(ptr [[P1]], i64 8) ]71; COUNTER3-NEXT:    call void @func_many(ptr noundef align 8 [[P1]])72; COUNTER3-NEXT:    call void @func_argattr(ptr [[P2]], ptr [[P3]])73; COUNTER3-NEXT:    call void @llvm.assume(i1 true) [ "noundef"(ptr [[P2]]), "align"(ptr [[P2]], i64 8), "noundef"(ptr [[P3]]), "nonnull"(ptr [[P3]]) ]74; COUNTER3-NEXT:    call void @func_argattr2(ptr [[P2]], ptr [[P3]])75; COUNTER3-NEXT:    call void @func(ptr nonnull [[P1]], ptr nonnull [[P]])76; COUNTER3-NEXT:    call void @llvm.assume(i1 true) [ "nonnull"(ptr [[P1]]), "noundef"(ptr [[P]]), "nonnull"(ptr [[P]]) ]77; COUNTER3-NEXT:    call void @func(ptr noundef nonnull [[P1]], ptr noundef nonnull [[P]])78; COUNTER3-NEXT:    ret void79;80  call void @func(ptr nonnull dereferenceable(16) %P, ptr null)81  call void @func(ptr dereferenceable(12) %P1, ptr nonnull %P)82  call void @func_cold(ptr dereferenceable(12) %P1) cold83  call void @func_cold(ptr dereferenceable(12) %P1)84  call void @func(ptr %P1, ptr %P)85  call void @func_strbool(ptr %P1)86  call void @func(ptr dereferenceable(32) %P, ptr dereferenceable(8) %P)87  call void @func_many(ptr align 8 %P1)88  call void @func_many(ptr align 8 noundef %P1)89  call void @func_argattr(ptr %P2, ptr %P3)90  call void @func_argattr2(ptr %P2, ptr %P3)91  call void @func(ptr nonnull %P1, ptr nonnull %P)92  call void @func(ptr nonnull noundef %P1, ptr nonnull noundef %P)93  ret void94}95