| ... | @@ -3894,10 +3894,14 @@ fn airSwitchBr(f: *Function, inst: Air.Inst.Index) !CValue { | ... | @@ -3894,10 +3894,14 @@ fn airSwitchBr(f: *Function, inst: Air.Inst.Index) !CValue { |
| 3894 | const writer = f.object.writer(); | 3894 | const writer = f.object.writer(); |
| 3895 | | 3895 | |
| 3896 | try writer.writeAll("switch ("); | 3896 | try writer.writeAll("switch ("); |
| 3897 | if (condition_ty.tag() == .bool) { | 3897 | if (condition_ty.zigTypeTag() == .Bool) { |
| 3898 | try writer.writeByte('('); | 3898 | try writer.writeByte('('); |
| 3899 | try f.renderTypecast(writer, Type.u1); | 3899 | try f.renderTypecast(writer, Type.u1); |
| 3900 | try writer.writeByte(')'); | 3900 | try writer.writeByte(')'); |
| | 3901 | } else if (condition_ty.isPtrAtRuntime()) { |
| | 3902 | try writer.writeByte('('); |
| | 3903 | try f.renderTypecast(writer, Type.usize); |
| | 3904 | try writer.writeByte(')'); |
| 3901 | } | 3905 | } |
| 3902 | try f.writeCValue(writer, condition, .Other); | 3906 | try f.writeCValue(writer, condition, .Other); |
| 3903 | try writer.writeAll(") {"); | 3907 | try writer.writeAll(") {"); |
| ... | @@ -3914,6 +3918,11 @@ fn airSwitchBr(f: *Function, inst: Air.Inst.Index) !CValue { | ... | @@ -3914,6 +3918,11 @@ fn airSwitchBr(f: *Function, inst: Air.Inst.Index) !CValue { |
| 3914 | for (items) |item| { | 3918 | for (items) |item| { |
| 3915 | try f.object.indent_writer.insertNewline(); | 3919 | try f.object.indent_writer.insertNewline(); |
| 3916 | try writer.writeAll("case "); | 3920 | try writer.writeAll("case "); |
| | 3921 | if (condition_ty.isPtrAtRuntime()) { |
| | 3922 | try writer.writeByte('('); |
| | 3923 | try f.renderTypecast(writer, Type.usize); |
| | 3924 | try writer.writeByte(')'); |
| | 3925 | } |
| 3917 | try f.object.dg.renderValue(writer, condition_ty, f.air.value(item).?, .Other); | 3926 | try f.object.dg.renderValue(writer, condition_ty, f.air.value(item).?, .Other); |
| 3918 | try writer.writeAll(": "); | 3927 | try writer.writeAll(": "); |
| 3919 | } | 3928 | } |