[PATCH] D45924: Set calling convention for varargs

Aditya Kumar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Apr 21 06:46:21 PDT 2018


hiraditya created this revision.
hiraditya added reviewers: tobiasvk, slarin, pranavb.

Varargs only follow C calling conventions.

Unfortunately, I do not have a test case for this. I just saw this while reading the code.


https://reviews.llvm.org/D45924

Files:
  lib/Transforms/IPO/MergeSimilarFunctions.cpp


Index: lib/Transforms/IPO/MergeSimilarFunctions.cpp
===================================================================
--- lib/Transforms/IPO/MergeSimilarFunctions.cpp
+++ lib/Transforms/IPO/MergeSimilarFunctions.cpp
@@ -1830,7 +1830,10 @@
   if (F1->hasSection())
     NewF->setSection(F1->getSection());
 
-  NewF->setCallingConv(CallingConv::Fast);
+  if (F1->getFunctionType()->isVarArg())
+    NewF->setCallingConv(CallingConv::C);
+  else
+    NewF->setCallingConv(CallingConv::Fast);
 
   Function::arg_iterator DestI = NewF->arg_begin();
   for (auto &Arg : F1->args()) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D45924.143446.patch
Type: text/x-patch
Size: 581 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180421/68a36dbc/attachment.bin>


More information about the llvm-commits mailing list