aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/BuildLibCalls.cpp
diff options
context:
space:
mode:
authorAugie Fackler <augie@google.com>2022-05-03 12:11:34 -0400
committerAugie Fackler <augie@google.com>2022-05-03 13:17:33 -0400
commit1deea714b3b4023b2d50f73503ee2782c3b59fe7 (patch)
treee367ec8fa67e899cc83d074408c435a5de52dac0 /llvm/lib/Transforms/Utils/BuildLibCalls.cpp
parente072a123d3b24995b0921802d69c93c08e3667bf (diff)
downloadllvm-1deea714b3b4023b2d50f73503ee2782c3b59fe7.zip
llvm-1deea714b3b4023b2d50f73503ee2782c3b59fe7.tar.gz
llvm-1deea714b3b4023b2d50f73503ee2782c3b59fe7.tar.bz2
BuildLibCalls: simplify switch statement slightly
Per feedback on D123086 after submit. Also added a test for vec_malloc et al attribute inference to show it's doing the right thing. The new tests exposed a defect, corrected by adding vec_free to the list of free functions in MemoryBuiltins.cpp, which had been overlooked all the way back in D94710, over a year ago. Differential Revision: https://reviews.llvm.org/D124859
Diffstat (limited to 'llvm/lib/Transforms/Utils/BuildLibCalls.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/BuildLibCalls.cpp20
1 files changed, 8 insertions, 12 deletions
diff --git a/llvm/lib/Transforms/Utils/BuildLibCalls.cpp b/llvm/lib/Transforms/Utils/BuildLibCalls.cpp
index 40fd407..75dbf7a 100644
--- a/llvm/lib/Transforms/Utils/BuildLibCalls.cpp
+++ b/llvm/lib/Transforms/Utils/BuildLibCalls.cpp
@@ -442,10 +442,9 @@ bool llvm::inferNonMandatoryLibFuncAttrs(Function &F,
LLVM_FALLTHROUGH;
case LibFunc_valloc:
case LibFunc_malloc:
- Changed |= setAllocFamily(F, "malloc");
- LLVM_FALLTHROUGH;
case LibFunc_vec_malloc:
- Changed |= setAllocFamily(F, "vec_malloc");
+ Changed |= setAllocFamily(F, TheLibFunc == LibFunc_vec_malloc ? "vec_malloc"
+ : "malloc");
Changed |= setAllocSize(F, 0, None);
Changed |= setOnlyAccessesInaccessibleMemory(F);
Changed |= setRetAndArgsNoUndef(F);
@@ -532,10 +531,9 @@ bool llvm::inferNonMandatoryLibFuncAttrs(Function &F,
return Changed;
case LibFunc_realloc:
case LibFunc_reallocf:
- Changed |= setAllocFamily(F, "malloc");
- LLVM_FALLTHROUGH;
case LibFunc_vec_realloc:
- Changed |= setAllocFamily(F, "vec_malloc");
+ Changed |= setAllocFamily(
+ F, TheLibFunc == LibFunc_vec_realloc ? "vec_malloc" : "malloc");
Changed |= setAllocatedPointerParam(F, 0);
Changed |= setAllocSize(F, 1, None);
Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F);
@@ -610,10 +608,9 @@ bool llvm::inferNonMandatoryLibFuncAttrs(Function &F,
Changed |= setOnlyWritesMemory(F, 0);
return Changed;
case LibFunc_calloc:
- Changed |= setAllocFamily(F, "malloc");
- LLVM_FALLTHROUGH;
case LibFunc_vec_calloc:
- Changed |= setAllocFamily(F, "vec_malloc");
+ Changed |= setAllocFamily(F, TheLibFunc == LibFunc_vec_calloc ? "vec_malloc"
+ : "malloc");
Changed |= setAllocSize(F, 0, 1);
Changed |= setOnlyAccessesInaccessibleMemory(F);
Changed |= setRetAndArgsNoUndef(F);
@@ -672,10 +669,9 @@ bool llvm::inferNonMandatoryLibFuncAttrs(Function &F,
Changed |= setDoesNotCapture(F, 0);
return Changed;
case LibFunc_free:
- Changed |= setAllocFamily(F, "malloc");
- LLVM_FALLTHROUGH;
case LibFunc_vec_free:
- Changed |= setAllocFamily(F, "vec_malloc");
+ Changed |= setAllocFamily(F, TheLibFunc == LibFunc_vec_free ? "vec_malloc"
+ : "malloc");
Changed |= setAllocatedPointerParam(F, 0);
Changed |= setOnlyAccessesInaccessibleMemOrArgMem(F);
Changed |= setArgsNoUndef(F);