diff --git a/emscripten-version.txt b/emscripten-version.txt index 5416318ab2a..7ae54502c61 100644 --- a/emscripten-version.txt +++ b/emscripten-version.txt @@ -1,2 +1,2 @@ -1.23.5 +1.24.0 diff --git a/lib/Target/JSBackend/JSBackend.cpp b/lib/Target/JSBackend/JSBackend.cpp index c5ddaa895db..cfadcdc0757 100644 --- a/lib/Target/JSBackend/JSBackend.cpp +++ b/lib/Target/JSBackend/JSBackend.cpp @@ -669,7 +669,9 @@ std::string JSWriter::getCast(const StringRef &s, Type *t, AsmCast sign) { switch (t->getTypeID()) { default: { // some types we cannot cast, like vectors - ignore - if (!t->isVectorTy()) { errs() << *t << "\n"; assert(false && "Unsupported type");} + if (t->isVectorTy()) return s; + errs() << *t << "\n"; + assert(false && "Unsupported type"); } case Type::FloatTyID: { if (PreciseF32 && !(sign & ASM_FFI_OUT)) { @@ -1131,6 +1133,8 @@ bool JSWriter::generateSIMDExpression(const User *I, raw_string_ostream& Code) { switch (Operator::getOpcode(I)) { default: I->dump(); error("invalid vector instr"); break; + case Instruction::Call: // return value is just a SIMD value, no special handling + return false; case Instruction::PHI: // handled separately - we push them back into the relooper branchings break; case Instruction::FAdd: Code << getAssignIfNeeded(I) << "SIMD.float32x4.add(" << getValueAsStr(I->getOperand(0)) << "," << getValueAsStr(I->getOperand(1)) << ")"; break;