From 0073656f9d1a0f74da798bf3b1890f94e9502517 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Mon, 9 Nov 2015 19:47:55 -0800 Subject: gcc workaround #1 --- src/wasm.h | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/wasm.h b/src/wasm.h index 31abf6cc9..0afb955a9 100644 --- a/src/wasm.h +++ b/src/wasm.h @@ -1066,27 +1066,28 @@ private: template struct WasmVisitor { - virtual ReturnType visitBlock(Block *curr) = 0; - virtual ReturnType visitIf(If *curr) = 0; - virtual ReturnType visitLoop(Loop *curr) = 0; - virtual ReturnType visitLabel(Label *curr) = 0; - virtual ReturnType visitBreak(Break *curr) = 0; - virtual ReturnType visitSwitch(Switch *curr) = 0; - virtual ReturnType visitCall(Call *curr) = 0; - virtual ReturnType visitCallImport(CallImport *curr) = 0; - virtual ReturnType visitCallIndirect(CallIndirect *curr) = 0; - virtual ReturnType visitGetLocal(GetLocal *curr) = 0; - virtual ReturnType visitSetLocal(SetLocal *curr) = 0; - virtual ReturnType visitLoad(Load *curr) = 0; - virtual ReturnType visitStore(Store *curr) = 0; - virtual ReturnType visitConst(Const *curr) = 0; - virtual ReturnType visitUnary(Unary *curr) = 0; - virtual ReturnType visitBinary(Binary *curr) = 0; - virtual ReturnType visitCompare(Compare *curr) = 0; - virtual ReturnType visitConvert(Convert *curr) = 0; - virtual ReturnType visitSelect(Select *curr) = 0; - virtual ReturnType visitHost(Host *curr) = 0; - virtual ReturnType visitNop(Nop *curr) = 0; + // should be pure virtual, but https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51048 + virtual ReturnType visitBlock(Block *curr) { abort(); } + virtual ReturnType visitIf(If *curr) { abort(); } + virtual ReturnType visitLoop(Loop *curr) { abort(); } + virtual ReturnType visitLabel(Label *curr) { abort(); } + virtual ReturnType visitBreak(Break *curr) { abort(); } + virtual ReturnType visitSwitch(Switch *curr) { abort(); } + virtual ReturnType visitCall(Call *curr) { abort(); } + virtual ReturnType visitCallImport(CallImport *curr) { abort(); } + virtual ReturnType visitCallIndirect(CallIndirect *curr) { abort(); } + virtual ReturnType visitGetLocal(GetLocal *curr) { abort(); } + virtual ReturnType visitSetLocal(SetLocal *curr) { abort(); } + virtual ReturnType visitLoad(Load *curr) { abort(); } + virtual ReturnType visitStore(Store *curr) { abort(); } + virtual ReturnType visitConst(Const *curr) { abort(); } + virtual ReturnType visitUnary(Unary *curr) { abort(); } + virtual ReturnType visitBinary(Binary *curr) { abort(); } + virtual ReturnType visitCompare(Compare *curr) { abort(); } + virtual ReturnType visitConvert(Convert *curr) { abort(); } + virtual ReturnType visitSelect(Select *curr) { abort(); } + virtual ReturnType visitHost(Host *curr) { abort(); } + virtual ReturnType visitNop(Nop *curr) { abort(); } ReturnType visit(Expression *curr) { assert(curr); -- cgit v1.2.3