aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-12-13 13:50:24 -0800
committerAlon Zakai <alonzakai@gmail.com>2013-12-13 13:50:24 -0800
commit817a707d8cffa3adef82d3c61b8240b773a81e87 (patch)
tree83f6cae6dd6bc9e92e70e15411168377731d5a33
parentff13dd9563635cd6fb7b9cc458e0e2c5317d0844 (diff)
horrible wip - rename intrinsics
-rw-r--r--lib/Transforms/NaCl/ExpandI64.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/Transforms/NaCl/ExpandI64.cpp b/lib/Transforms/NaCl/ExpandI64.cpp
index d575d1943a..5909f686ca 100644
--- a/lib/Transforms/NaCl/ExpandI64.cpp
+++ b/lib/Transforms/NaCl/ExpandI64.cpp
@@ -154,6 +154,17 @@ void ExpandI64::ensureLegalFunc(Function *F) {
Type *T = i == -1 ? FT->getReturnType() : FT->getParamType(i);
if (isIllegal(T)) {
Function *NF = RecreateFunction(F, getLegalizedFunctionType(FT));
+ std::string Name = NF->getName();
+ if (strncmp(Name.c_str(), "llvm.", 5) == 0) {
+ // this is an intrinsic, and we are changing its signature, which will annoy LLVM, so rename
+ char NewName[Name.size()+1];
+ const char *CName = Name.c_str();
+ for (unsigned i = 0; i < Name.size()+1; i++) {
+ NewName[i] = CName[i] != '.' ? CName[i] : '_';
+ }
+dumpv("rename %s => %s", CName, NewName);
+ NF->setName(NewName);
+ }
// Move and update arguments
for (Function::arg_iterator Arg = F->arg_begin(), E = F->arg_end(), NewArg = NF->arg_begin();
Arg != E; ++Arg, ++NewArg) {