Index: lib/CodeGen/ItaniumCXXABI.cpp |
diff --git a/lib/CodeGen/ItaniumCXXABI.cpp b/lib/CodeGen/ItaniumCXXABI.cpp |
index fd299d14c13cffea7be8756e695229e3c99d9553..66743d28546d56193568a2e23fc1d0c89fbd13c2 100644 |
--- a/lib/CodeGen/ItaniumCXXABI.cpp |
+++ b/lib/CodeGen/ItaniumCXXABI.cpp |
@@ -339,6 +339,14 @@ CodeGen::CGCXXABI *CodeGen::CreateItaniumCXXABI(CodeGenModule &CGM) { |
return new ItaniumCXXABI(CGM, /* UseARMMethodPtrABI = */ true, |
/* UseARMGuardVarABI = */ true); |
+ // @LOCALMOD-START Emscripten |
+ case TargetCXXABI::Emscripten: |
+ // Use ARM-style method pointers so that generated code does not assume |
+ // anything about the alignment of function pointers. |
+ return new ItaniumCXXABI(CGM, /* UseARMMethodPtrABI = */ true, |
+ /* UseARMGuardVarABI = */ false); |
+ // @LOCALMOD-END Emscripten |
+ |
case TargetCXXABI::GenericItanium: |
if (CGM.getContext().getTargetInfo().getTriple().getArch() |
== llvm::Triple::le32) { |