@@ -1066,27 +1066,28 @@ class Module {
1066
1066
1067
1067
template <class ReturnType >
1068
1068
struct WasmVisitor {
1069
- virtual ReturnType visitBlock (Block *curr) = 0;
1070
- virtual ReturnType visitIf (If *curr) = 0;
1071
- virtual ReturnType visitLoop (Loop *curr) = 0;
1072
- virtual ReturnType visitLabel (Label *curr) = 0;
1073
- virtual ReturnType visitBreak (Break *curr) = 0;
1074
- virtual ReturnType visitSwitch (Switch *curr) = 0;
1075
- virtual ReturnType visitCall (Call *curr) = 0;
1076
- virtual ReturnType visitCallImport (CallImport *curr) = 0;
1077
- virtual ReturnType visitCallIndirect (CallIndirect *curr) = 0;
1078
- virtual ReturnType visitGetLocal (GetLocal *curr) = 0;
1079
- virtual ReturnType visitSetLocal (SetLocal *curr) = 0;
1080
- virtual ReturnType visitLoad (Load *curr) = 0;
1081
- virtual ReturnType visitStore (Store *curr) = 0;
1082
- virtual ReturnType visitConst (Const *curr) = 0;
1083
- virtual ReturnType visitUnary (Unary *curr) = 0;
1084
- virtual ReturnType visitBinary (Binary *curr) = 0;
1085
- virtual ReturnType visitCompare (Compare *curr) = 0;
1086
- virtual ReturnType visitConvert (Convert *curr) = 0;
1087
- virtual ReturnType visitSelect (Select *curr) = 0;
1088
- virtual ReturnType visitHost (Host *curr) = 0;
1089
- virtual ReturnType visitNop (Nop *curr) = 0;
1069
+ // should be pure virtual, but https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51048
1070
+ virtual ReturnType visitBlock (Block *curr) { abort (); }
1071
+ virtual ReturnType visitIf (If *curr) { abort (); }
1072
+ virtual ReturnType visitLoop (Loop *curr) { abort (); }
1073
+ virtual ReturnType visitLabel (Label *curr) { abort (); }
1074
+ virtual ReturnType visitBreak (Break *curr) { abort (); }
1075
+ virtual ReturnType visitSwitch (Switch *curr) { abort (); }
1076
+ virtual ReturnType visitCall (Call *curr) { abort (); }
1077
+ virtual ReturnType visitCallImport (CallImport *curr) { abort (); }
1078
+ virtual ReturnType visitCallIndirect (CallIndirect *curr) { abort (); }
1079
+ virtual ReturnType visitGetLocal (GetLocal *curr) { abort (); }
1080
+ virtual ReturnType visitSetLocal (SetLocal *curr) { abort (); }
1081
+ virtual ReturnType visitLoad (Load *curr) { abort (); }
1082
+ virtual ReturnType visitStore (Store *curr) { abort (); }
1083
+ virtual ReturnType visitConst (Const *curr) { abort (); }
1084
+ virtual ReturnType visitUnary (Unary *curr) { abort (); }
1085
+ virtual ReturnType visitBinary (Binary *curr) { abort (); }
1086
+ virtual ReturnType visitCompare (Compare *curr) { abort (); }
1087
+ virtual ReturnType visitConvert (Convert *curr) { abort (); }
1088
+ virtual ReturnType visitSelect (Select *curr) { abort (); }
1089
+ virtual ReturnType visitHost (Host *curr) { abort (); }
1090
+ virtual ReturnType visitNop (Nop *curr) { abort (); }
1090
1091
1091
1092
ReturnType visit (Expression *curr) {
1092
1093
assert (curr);
0 commit comments