Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(256)

Unified Diff: lib/Transforms/NaCl/PNaClABISimplify.cpp

Issue 1692803002: Remove Emscripten support (Closed) Base URL: https://chromium.googlesource.com/a/native_client/pnacl-llvm.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/Transforms/NaCl/NoExitRuntime.cpp ('k') | lib/Transforms/NaCl/ResolvePNaClIntrinsics.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/Transforms/NaCl/PNaClABISimplify.cpp
diff --git a/lib/Transforms/NaCl/PNaClABISimplify.cpp b/lib/Transforms/NaCl/PNaClABISimplify.cpp
index 1dac32cde83b7fa53a242afdfc3a00d826438f7f..67a1f68e2f4de1e638c5558f84415f52c27e63d1 100644
--- a/lib/Transforms/NaCl/PNaClABISimplify.cpp
+++ b/lib/Transforms/NaCl/PNaClABISimplify.cpp
@@ -28,21 +28,7 @@ EnableSjLjEH("enable-pnacl-sjlj-eh",
"as part of the pnacl-abi-simplify passes"),
cl::init(false));
-// Emscripten options:
-static cl::opt<bool>
- EnableEmCxxExceptions("enable-emscripten-cxx-exceptions",
- cl::desc("Enables C++ exceptions in emscripten"),
- cl::init(false));
-
-static cl::opt<bool> EnableEmAsyncify(
- "emscripten-asyncify",
- cl::desc("Enable asyncify transformation (see emscripten ASYNCIFY option)"),
- cl::init(false));
-// Emscripten options end.
-
void llvm::PNaClABISimplifyAddPreOptPasses(Triple *T, PassManagerBase &PM) {
- bool isEmscripten = T->isOSEmscripten();
-
PM.add(createStripDanglingDISubprogramsPass());
if (EnableSjLjEH) {
// This comes before ExpandTls because it introduces references to
@@ -50,8 +36,6 @@ void llvm::PNaClABISimplifyAddPreOptPasses(Triple *T, PassManagerBase &PM) {
// InternalizePass because it assumes various variables (including
// __pnacl_eh_stack) have not been internalized yet.
PM.add(createPNaClSjLjEHPass());
- } else if (EnableEmCxxExceptions) {
- PM.add(createLowerEmExceptionsPass());
} else {
// LowerInvoke prevents use of C++ exception handling by removing
// references to BasicBlocks which handle exceptions.
@@ -65,29 +49,22 @@ void llvm::PNaClABISimplifyAddPreOptPasses(Triple *T, PassManagerBase &PM) {
// instructions, so remove them.
PM.add(createCFGSimplificationPass());
- if (isEmscripten)
- PM.add(createLowerEmSetjmpPass());
-
// Internalize all symbols in the module except the entry point. A PNaCl
// pexe is only allowed to export "_start", whereas a PNaCl PSO is only
// allowed to export "__pnacl_pso_root".
const char *SymbolsToPreserve[] = {"_start", "__pnacl_pso_root"};
- if (!isEmscripten) // Preserve arbitrary symbols.
- PM.add(createInternalizePass(SymbolsToPreserve));
- if (!isEmscripten)
- PM.add(createInternalizeUsedGlobalsPass());
+ PM.add(createInternalizePass(SymbolsToPreserve));
+ PM.add(createInternalizeUsedGlobalsPass());
// Expand out computed gotos (indirectbr and blockaddresses) into switches.
PM.add(createExpandIndirectBrPass());
// LowerExpect converts Intrinsic::expect into branch weights,
// which can then be removed after BlockPlacement.
- if (!isEmscripten) // JSBackend supports the expect intrinsic.
- PM.add(createLowerExpectIntrinsicPass());
+ PM.add(createLowerExpectIntrinsicPass());
// Rewrite unsupported intrinsics to simpler and portable constructs.
- if (!isEmscripten)
- PM.add(createRewriteLLVMIntrinsicsPass());
+ PM.add(createRewriteLLVMIntrinsicsPass());
// ExpandStructRegs must be run after ExpandVarArgs so that struct-typed
// "va_arg" instructions have been removed.
@@ -105,27 +82,17 @@ void llvm::PNaClABISimplifyAddPreOptPasses(Triple *T, PassManagerBase &PM) {
PM.add(createExpandCtorsPass());
- if (!isEmscripten) // Handled by JSBackend.
- PM.add(createResolveAliasesPass());
+ PM.add(createResolveAliasesPass());
- if (!isEmscripten) // No TLS in JavaScript.
- PM.add(createExpandTlsPass());
+ PM.add(createExpandTlsPass());
// GlobalCleanup needs to run after ExpandTls because
// __tls_template_start etc. are extern_weak before expansion.
- if (!isEmscripten) // JSBackend can handle external_weak.
- PM.add(createGlobalCleanupPass());
-
- if (EnableEmAsyncify)
- PM.add(createLowerEmAsyncifyPass());
+ PM.add(createGlobalCleanupPass());
}
void llvm::PNaClABISimplifyAddPostOptPasses(Triple *T, PassManagerBase &PM) {
- bool isEmscripten = T->isOSEmscripten();
-
- if (!isEmscripten) // setjmp/longjmp are handled in LowerEmSetjmp,
- // memcpy/memmove/memset are handled in JSBackend.
- PM.add(createRewritePNaClLibraryCallsPass());
+ PM.add(createRewritePNaClLibraryCallsPass());
// ExpandStructRegs must be run after ExpandArithWithOverflow to expand out
// the insertvalue instructions that ExpandArithWithOverflow introduces.
@@ -142,8 +109,7 @@ void llvm::PNaClABISimplifyAddPostOptPasses(Triple *T, PassManagerBase &PM) {
// some optimizations undo its changes. Note that
// ExpandSmallArguments requires that ExpandVarArgs has already been
// run.
- if (!isEmscripten)
- PM.add(createExpandSmallArgumentsPass());
+ PM.add(createExpandSmallArgumentsPass());
PM.add(createPromoteI1OpsPass());
@@ -153,21 +119,18 @@ void llvm::PNaClABISimplifyAddPostOptPasses(Triple *T, PassManagerBase &PM) {
// after it, and it must run before GlobalizeConstantVectors because the mask
// argument of shufflevector must be a constant (the pass would otherwise
// violate this requirement).
- if (!isEmscripten) // JSBackend handles shufflevector.
- PM.add(createExpandShuffleVectorPass());
+ PM.add(createExpandShuffleVectorPass());
// We should not place arbitrary passes after ExpandConstantExpr
// because they might reintroduce ConstantExprs.
PM.add(createExpandConstantExprPass());
// GlobalizeConstantVectors does not handle nested ConstantExprs, so we
// run ExpandConstantExpr first.
- if (!isEmscripten) // JSBackend handles constant vectors.
- PM.add(createGlobalizeConstantVectorsPass());
+ PM.add(createGlobalizeConstantVectorsPass());
// The following pass inserts GEPs, it must precede ExpandGetElementPtr. It
// also creates vector loads and stores, the subsequent pass cleans them up to
// fix their alignment.
PM.add(createConstantInsertExtractElementIndexPass());
- if (!isEmscripten) // JSBackend handles unaligned vector load/store.
- PM.add(createFixVectorLoadStoreAlignmentPass());
+ PM.add(createFixVectorLoadStoreAlignmentPass());
// Optimization passes and ExpandByVal introduce
// memset/memcpy/memmove intrinsics with a 64-bit size argument.
@@ -176,8 +139,7 @@ void llvm::PNaClABISimplifyAddPostOptPasses(Triple *T, PassManagerBase &PM) {
// We place StripMetadata after optimization passes because
// optimizations depend on the metadata.
- if (!isEmscripten) // Run this later, JSBackend's optimizations rely on it.
- PM.add(createStripMetadataPass());
+ PM.add(createStripMetadataPass());
// ConstantMerge cleans up after passes such as GlobalizeConstantVectors. It
// must run before the FlattenGlobals pass because FlattenGlobals loses
@@ -195,22 +157,19 @@ void llvm::PNaClABISimplifyAddPostOptPasses(Triple *T, PassManagerBase &PM) {
PM.add(createPromoteIntegersPass());
// ExpandGetElementPtr must follow ExpandConstantExpr to expand the
// getelementptr instructions it creates.
- if (!isEmscripten) // Handled by JSBackend.
- PM.add(createExpandGetElementPtrPass());
+ PM.add(createExpandGetElementPtrPass());
// Rewrite atomic and volatile instructions with intrinsic calls.
PM.add(createRewriteAtomicsPass());
// Remove ``asm("":::"memory")``. This must occur after rewriting
// atomics: a ``fence seq_cst`` surrounded by ``asm("":::"memory")``
// has special meaning and is translated differently.
- if (!isEmscripten) // No special semantics in JavaScript.
- PM.add(createRemoveAsmMemoryPass());
+ PM.add(createRemoveAsmMemoryPass());
PM.add(createSimplifyAllocasPass());
// ReplacePtrsWithInts assumes that getelementptr instructions and
// ConstantExprs have already been expanded out.
- if (!isEmscripten) // Handled by JSBackend.
- PM.add(createReplacePtrsWithIntsPass());
+ PM.add(createReplacePtrsWithIntsPass());
// The atomic cmpxchg instruction returns a struct, and is rewritten to an
// intrinsic as a post-opt pass, we therefore need to expand struct regs.
@@ -220,23 +179,19 @@ void llvm::PNaClABISimplifyAddPostOptPasses(Triple *T, PassManagerBase &PM) {
// analyses add attributes to reflect their results.
// StripAttributes must come after ExpandByVal and
// ExpandSmallArguments.
- if (!isEmscripten)
- PM.add(createStripAttributesPass());
+ PM.add(createStripAttributesPass());
// Many passes create loads and stores. This pass changes their alignment.
- if (!isEmscripten)
- PM.add(createNormalizeAlignmentPass());
+ PM.add(createNormalizeAlignmentPass());
// Strip dead prototytes to appease the intrinsic ABI checks.
// ExpandVarArgs leaves around vararg intrinsics, and
// ReplacePtrsWithInts leaves the lifetime.start/end intrinsics.
- if (!isEmscripten) // Dead prototypes ignored by JSBackend.
- PM.add(createStripDeadPrototypesPass());
+ PM.add(createStripDeadPrototypesPass());
// Eliminate simple dead code that the post-opt passes could have created.
PM.add(createDeadCodeEliminationPass());
// This should be the last step before PNaCl ABI validation.
- if (!isEmscripten)
- PM.add(createCleanupUsedGlobalsMetadataPass());
+ PM.add(createCleanupUsedGlobalsMetadataPass());
}
« no previous file with comments | « lib/Transforms/NaCl/NoExitRuntime.cpp ('k') | lib/Transforms/NaCl/ResolvePNaClIntrinsics.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698