xref: /llvm-project/llvm/test/Transforms/InstCombine/builtin-object-size-strdup-family.ll (revision 211cf8a384ebb29787367c8fd5858e2a5ed3c10f)
139b02d49Sserge-sans-paille; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2*211cf8a3SBjorn Pettersson; RUN: opt -passes=instcombine -S < %s | FileCheck %s
339b02d49Sserge-sans-paille
439b02d49Sserge-sans-paille
539b02d49Sserge-sans-pailletarget datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
639b02d49Sserge-sans-pailletarget triple = "x86_64-unknown-linux-gnu"
739b02d49Sserge-sans-paille
84ab40ecaSBjorn Petterssondeclare dso_local noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr
94ab40ecaSBjorn Petterssondeclare i64 @llvm.objectsize.i64.p0(ptr, i1 immarg, i1 immarg, i1 immarg)
104ab40ecaSBjorn Petterssondeclare noalias ptr @strdup(ptr);
114ab40ecaSBjorn Petterssondeclare noalias ptr @__strdup(ptr);
124ab40ecaSBjorn Petterssondeclare noalias ptr @strndup(ptr, i64);
134ab40ecaSBjorn Petterssondeclare noalias ptr @__strndup(ptr, i64);
1439b02d49Sserge-sans-paille
1539b02d49Sserge-sans-paille@str = dso_local constant [11 x i8] c"toulbroc'h\00"
1639b02d49Sserge-sans-paille
1739b02d49Sserge-sans-pailledefine dso_local i64 @check_strdup(i32 noundef %n) local_unnamed_addr {
1839b02d49Sserge-sans-paille; CHECK-LABEL: @check_strdup(
1939b02d49Sserge-sans-paille; CHECK-NEXT:    ret i64 11
2039b02d49Sserge-sans-paille;
214ab40ecaSBjorn Pettersson  %ptr = call noalias ptr @strdup(ptr noundef @str)
224ab40ecaSBjorn Pettersson  %size = call i64 @llvm.objectsize.i64.p0(ptr %ptr, i1 false, i1 true, i1 false)
2339b02d49Sserge-sans-paille  ret i64 %size
2439b02d49Sserge-sans-paille}
2539b02d49Sserge-sans-paille
2639b02d49Sserge-sans-pailledefine dso_local i64 @check_dunder_strdup(i32 noundef %n) local_unnamed_addr {
2739b02d49Sserge-sans-paille; CHECK-LABEL: @check_dunder_strdup(
2839b02d49Sserge-sans-paille; CHECK-NEXT:    ret i64 11
2939b02d49Sserge-sans-paille;
304ab40ecaSBjorn Pettersson  %ptr = call noalias ptr @__strdup(ptr noundef @str)
314ab40ecaSBjorn Pettersson  %size = call i64 @llvm.objectsize.i64.p0(ptr %ptr, i1 false, i1 true, i1 false)
3239b02d49Sserge-sans-paille  ret i64 %size
3339b02d49Sserge-sans-paille}
3439b02d49Sserge-sans-paille
3539b02d49Sserge-sans-pailledefine dso_local i64 @check_strndup(i32 noundef %n) local_unnamed_addr {
3639b02d49Sserge-sans-paille; CHECK-LABEL: @check_strndup(
3739b02d49Sserge-sans-paille; CHECK-NEXT:    ret i64 5
3839b02d49Sserge-sans-paille;
394ab40ecaSBjorn Pettersson  %ptr = call noalias ptr @strndup(ptr noundef @str, i64 4)
404ab40ecaSBjorn Pettersson  %size = call i64 @llvm.objectsize.i64.p0(ptr %ptr, i1 false, i1 true, i1 false)
4139b02d49Sserge-sans-paille  ret i64 %size
4239b02d49Sserge-sans-paille}
4339b02d49Sserge-sans-paille
4439b02d49Sserge-sans-pailledefine dso_local i64 @check_dunder_strndup(i32 noundef %n) local_unnamed_addr {
4539b02d49Sserge-sans-paille; CHECK-LABEL: @check_dunder_strndup(
4639b02d49Sserge-sans-paille; CHECK-NEXT:    ret i64 5
4739b02d49Sserge-sans-paille;
484ab40ecaSBjorn Pettersson  %ptr = call noalias ptr @__strndup(ptr noundef @str, i64 4)
494ab40ecaSBjorn Pettersson  %size = call i64 @llvm.objectsize.i64.p0(ptr %ptr, i1 false, i1 true, i1 false)
5039b02d49Sserge-sans-paille  ret i64 %size
5139b02d49Sserge-sans-paille}
52