summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2018-09-13 17:13:10 +0000
committerSam Clegg <sbc@chromium.org>2018-09-13 17:13:10 +0000
commit79c054f6b8b0f7989366f56c84ee30f92e3e6b1f (patch)
tree91aebc9b1f3eb4803b70f01e926738b48d78d571 /llvm/lib/Target
parentdbdd46da186df61af6f9ea614d89979e0715cc52 (diff)
downloadbcm5719-llvm-79c054f6b8b0f7989366f56c84ee30f92e3e6b1f.tar.gz
bcm5719-llvm-79c054f6b8b0f7989366f56c84ee30f92e3e6b1f.zip
[WebAssembly] Fix signature of `main` in FixFunctionBitcasts
Also, add a check to ensure that when main has the expected signature we do not create a wrapper. Differential Revision: https://reviews.llvm.org/D51562 llvm-svn: 342157
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
index 179dcc50540..0644f1232f6 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyFixFunctionBitcasts.cpp
@@ -244,11 +244,13 @@ bool FixFunctionBitcasts::runOnModule(Module &M) {
if (!TemporaryWorkarounds && !F.isDeclaration() && F.getName() == "main") {
Main = &F;
LLVMContext &C = M.getContext();
- Type *MainArgTys[] = {PointerType::get(Type::getInt8PtrTy(C), 0),
- Type::getInt32Ty(C)};
+ Type *MainArgTys[] = {Type::getInt32Ty(C),
+ PointerType::get(Type::getInt8PtrTy(C), 0)};
FunctionType *MainTy = FunctionType::get(Type::getInt32Ty(C), MainArgTys,
/*isVarArg=*/false);
if (F.getFunctionType() != MainTy) {
+ LLVM_DEBUG(dbgs() << "Found `main` function with incorrect type: "
+ << *F.getFunctionType() << "\n");
Value *Args[] = {UndefValue::get(MainArgTys[0]),
UndefValue::get(MainArgTys[1])};
Value *Casted =
OpenPOWER on IntegriCloud