Skip to content

Commit b47d587

Browse files
committed
[LibCall] Do not set nocallback for memory allocation functions
1 parent 3268bd6 commit b47d587

File tree

2 files changed

+11
-18
lines changed

2 files changed

+11
-18
lines changed

llvm/lib/Transforms/Utils/BuildLibCalls.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -455,7 +455,6 @@ bool llvm::inferNonMandatoryLibFuncAttrs(Function &F,
455455
Changed |= setAllocFamily(F, "malloc");
456456
Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F);
457457
Changed |= setDoesNotThrow(F);
458-
Changed |= setDoesNotCallback(F);
459458
Changed |= setRetDoesNotAlias(F);
460459
Changed |= setWillReturn(F);
461460
Changed |= setDoesNotCapture(F, 0);
@@ -530,7 +529,6 @@ bool llvm::inferNonMandatoryLibFuncAttrs(Function &F,
530529
Changed |= setOnlyAccessesInaccessibleMemory(F);
531530
Changed |= setRetAndArgsNoUndef(F);
532531
Changed |= setDoesNotThrow(F);
533-
Changed |= setDoesNotCallback(F);
534532
Changed |= setRetDoesNotAlias(F);
535533
Changed |= setWillReturn(F);
536534
break;
@@ -606,7 +604,6 @@ bool llvm::inferNonMandatoryLibFuncAttrs(Function &F,
606604
Changed |= setOnlyAccessesInaccessibleMemory(F);
607605
Changed |= setRetNoUndef(F);
608606
Changed |= setDoesNotThrow(F);
609-
Changed |= setDoesNotCallback(F);
610607
Changed |= setRetDoesNotAlias(F);
611608
Changed |= setWillReturn(F);
612609
break;
@@ -635,7 +632,6 @@ bool llvm::inferNonMandatoryLibFuncAttrs(Function &F,
635632
Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F);
636633
Changed |= setRetNoUndef(F);
637634
Changed |= setDoesNotThrow(F);
638-
Changed |= setDoesNotCallback(F);
639635
Changed |= setRetDoesNotAlias(F);
640636
Changed |= setWillReturn(F);
641637
Changed |= setDoesNotCapture(F, 0);
@@ -649,7 +645,6 @@ bool llvm::inferNonMandatoryLibFuncAttrs(Function &F,
649645
Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F);
650646
Changed |= setRetNoUndef(F);
651647
Changed |= setDoesNotThrow(F);
652-
Changed |= setDoesNotCallback(F);
653648
Changed |= setRetDoesNotAlias(F);
654649
Changed |= setWillReturn(F);
655650
Changed |= setDoesNotCapture(F, 0);
@@ -737,7 +732,6 @@ bool llvm::inferNonMandatoryLibFuncAttrs(Function &F,
737732
Changed |= setOnlyAccessesInaccessibleMemory(F);
738733
Changed |= setRetAndArgsNoUndef(F);
739734
Changed |= setDoesNotThrow(F);
740-
Changed |= setDoesNotCallback(F);
741735
Changed |= setRetDoesNotAlias(F);
742736
Changed |= setWillReturn(F);
743737
break;
@@ -807,7 +801,6 @@ bool llvm::inferNonMandatoryLibFuncAttrs(Function &F,
807801
Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F);
808802
Changed |= setArgsNoUndef(F);
809803
Changed |= setDoesNotThrow(F);
810-
Changed |= setDoesNotCallback(F);
811804
Changed |= setWillReturn(F);
812805
Changed |= setDoesNotCapture(F, 0);
813806
break;

llvm/test/Transforms/InferFunctionAttrs/annotate.ll

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1187,27 +1187,27 @@ declare void @memset_pattern16(ptr, ptr, i64)
11871187
; CHECK-DAG: attributes [[ERRNOMEMONLY_NOFREE_NOUNWIND_WILLRETURN]] = { mustprogress nocallback nofree nounwind willreturn memory(errnomem: write) }
11881188
; CHECK-DAG: attributes [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN_WRITEONLY]] = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
11891189
; CHECK-DAG: attributes [[NOFREE_NOUNWIND]] = { nocallback nofree nounwind }
1190-
; CHECK-DAG: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN_ALLOCKIND_ALLOCUNINIT_ALLOCSIZE1_FAMILY_MALLOC]] = { mustprogress nocallback nofree nounwind willreturn allockind("alloc,uninitialized,aligned") allocsize(1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
1191-
; CHECK-DAG: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN_ALLOCKIND_ALLOCZEROED_ALLOCSIZE01_FAMILY_MALLOC]] = { mustprogress nocallback nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
1190+
; CHECK-DAG: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN_ALLOCKIND_ALLOCUNINIT_ALLOCSIZE1_FAMILY_MALLOC]] = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized,aligned") allocsize(1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
1191+
; CHECK-DAG: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN_ALLOCKIND_ALLOCZEROED_ALLOCSIZE01_FAMILY_MALLOC]] = { mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
11921192
; CHECK-DAG: attributes [[NOFREE_NOUNWIND_READONLY_WILLRETURN]] = { mustprogress nocallback nofree nounwind willreturn memory(read) }
11931193
; CHECK-DAG: attributes [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]] = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
11941194
; CHECK-DAG: attributes [[NOFREE_NOUNWIND_READONLY]] = { nocallback nofree nounwind memory(read) }
1195-
; CHECK-DAG: attributes [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN_ALLOCKIND_FREE_FAMILY_MALLOC]] = { mustprogress nocallback nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" }
1196-
; CHECK-DAG: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN_ALLOCKIND_ALLOCUNINIT_ALLOCSIZE0_FAMILY_MALLOC]] = { mustprogress nocallback nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
1195+
; CHECK-DAG: attributes [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN_ALLOCKIND_FREE_FAMILY_MALLOC]] = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" }
1196+
; CHECK-DAG: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN_ALLOCKIND_ALLOCUNINIT_ALLOCSIZE0_FAMILY_MALLOC]] = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" }
11971197
; CHECK-DAG: attributes [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY_WILLRETURN]] = { mustprogress nocallback nofree nounwind willreturn memory(argmem: read) }
11981198
; CHECK-DAG: attributes [[NOFREE]] = { nofree }
11991199
; CHECK-DAG: attributes [[NOCALLBACK_NOFREE]] = { nocallback nofree }
12001200
; CHECK-DAG: attributes [[ARGMEMONLY_NOFREE_NOUNWIND]] = { nocallback nofree nounwind memory(argmem: readwrite) }
1201-
; CHECK-DAG: attributes [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN_ALLOCKIND_REALLOC_ALLOCSIZE1_FAMILY_MALLOC]] = { mustprogress nocallback nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" }
1202-
; CHECK-DAG: attributes [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN_ALLOCKIND_REALLOC_ALLOCSIZE12_FAMILY_MALLOC]] = { mustprogress nocallback nounwind willreturn allockind("realloc") allocsize(1,2) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" }
1203-
; CHECK-DAG: attributes [[INACCESSIBLEMEMORARGONLY_NOFREE_NOUNWIND_WILLRETURN_FAMILY_MALLOC]] = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" }
1201+
; CHECK-DAG: attributes [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN_ALLOCKIND_REALLOC_ALLOCSIZE1_FAMILY_MALLOC]] = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" }
1202+
; CHECK-DAG: attributes [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN_ALLOCKIND_REALLOC_ALLOCSIZE12_FAMILY_MALLOC]] = { mustprogress nounwind willreturn allockind("realloc") allocsize(1,2) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" }
1203+
; CHECK-DAG: attributes [[INACCESSIBLEMEMORARGONLY_NOFREE_NOUNWIND_WILLRETURN_FAMILY_MALLOC]] = { mustprogress nofree nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" }
12041204
; CHECK-DAG: attributes [[NOFREE_COLD_NORETURN_NOUNWIND]] = { cold nocallback nofree noreturn nounwind }
12051205
; CHECK-DAG: attributes [[NOFREE_COLD_NORETURN]] = { cold nofree noreturn }
12061206
; CHECK-DAG: attributes [[COLD_NORETURN]] = { cold noreturn }
12071207

12081208
; CHECK-NVPTX-DAG: attributes [[NOFREE_NOUNWIND_READNONE]] = { nocallback nofree nosync nounwind memory(none) }
12091209

1210-
; CHECK-AIX-DAG: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN_ALLOCSIZE0_FAMILY_VEC_MALLOC]] = { mustprogress nocallback nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="vec_malloc" }
1211-
; CHECK-AIX-DAG: attributes [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN_FAMILY_VEC_MALLOC]] = { mustprogress nocallback nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="vec_malloc" }
1212-
; CHECK-AIX-DAG: attributes [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN_ALLOCSIZE_FAMILY_VEC_MALLOC]] = { mustprogress nocallback nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="vec_malloc" }
1213-
; CHECK-AIX-DAG: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN_ALLOCSIZE01_FAMILY_VEC_MALLOC]] = { mustprogress nocallback nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="vec_malloc" }
1210+
; CHECK-AIX-DAG: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN_ALLOCSIZE0_FAMILY_VEC_MALLOC]] = { mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite) "alloc-family"="vec_malloc" }
1211+
; CHECK-AIX-DAG: attributes [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN_FAMILY_VEC_MALLOC]] = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="vec_malloc" }
1212+
; CHECK-AIX-DAG: attributes [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN_ALLOCSIZE_FAMILY_VEC_MALLOC]] = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="vec_malloc" }
1213+
; CHECK-AIX-DAG: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN_ALLOCSIZE01_FAMILY_VEC_MALLOC]] = { mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="vec_malloc" }

0 commit comments

Comments
 (0)