| ... | ... | @@ -3173,63 +3173,59 @@ pub fn addCases(cases: *tests.TranslateCContext) void { |
| 3173 | 3173 | \\} |
| 3174 | 3174 | }); |
| 3175 | 3175 | |
| 3176 | | // Regressed with LLVM 15: |
| 3177 | | // https://github.com/ziglang/zig/issues/12682 |
| 3178 | | if (false) { |
| 3179 | | if (builtin.zig_backend != .stage1) { |
| 3180 | | cases.add("implicit casts", |
| 3181 | | \\#include <stdbool.h> |
| 3182 | | \\ |
| 3183 | | \\void fn_int(int x); |
| 3184 | | \\void fn_f32(float x); |
| 3185 | | \\void fn_f64(double x); |
| 3186 | | \\void fn_char(char x); |
| 3187 | | \\void fn_bool(bool x); |
| 3188 | | \\void fn_ptr(void *x); |
| 3189 | | \\ |
| 3190 | | \\void call() { |
| 3191 | | \\ fn_int(3.0f); |
| 3192 | | \\ fn_int(3.0); |
| 3193 | | \\ fn_int('ABCD'); |
| 3194 | | \\ fn_f32(3); |
| 3195 | | \\ fn_f64(3); |
| 3196 | | \\ fn_char('3'); |
| 3197 | | \\ fn_char('\x1'); |
| 3198 | | \\ fn_char(0); |
| 3199 | | \\ fn_f32(3.0f); |
| 3200 | | \\ fn_f64(3.0); |
| 3201 | | \\ fn_bool(123); |
| 3202 | | \\ fn_bool(0); |
| 3203 | | \\ fn_bool(&fn_int); |
| 3204 | | \\ fn_int(&fn_int); |
| 3205 | | \\ fn_ptr(42); |
| 3206 | | \\} |
| 3207 | | , &[_][]const u8{ |
| 3208 | | \\pub extern fn fn_int(x: c_int) void; |
| 3209 | | \\pub extern fn fn_f32(x: f32) void; |
| 3210 | | \\pub extern fn fn_f64(x: f64) void; |
| 3211 | | \\pub extern fn fn_char(x: u8) void; |
| 3212 | | \\pub extern fn fn_bool(x: bool) void; |
| 3213 | | \\pub extern fn fn_ptr(x: ?*anyopaque) void; |
| 3214 | | \\pub export fn call() void { |
| 3215 | | \\ fn_int(@floatToInt(c_int, 3.0)); |
| 3216 | | \\ fn_int(@floatToInt(c_int, 3.0)); |
| 3217 | | \\ fn_int(@as(c_int, 1094861636)); |
| 3218 | | \\ fn_f32(@intToFloat(f32, @as(c_int, 3))); |
| 3219 | | \\ fn_f64(@intToFloat(f64, @as(c_int, 3))); |
| 3220 | | \\ fn_char(@bitCast(u8, @truncate(i8, @as(c_int, '3')))); |
| 3221 | | \\ fn_char(@bitCast(u8, @truncate(i8, @as(c_int, '\x01')))); |
| 3222 | | \\ fn_char(@bitCast(u8, @truncate(i8, @as(c_int, 0)))); |
| 3223 | | \\ fn_f32(3.0); |
| 3224 | | \\ fn_f64(3.0); |
| 3225 | | \\ fn_bool(@as(c_int, 123) != 0); |
| 3226 | | \\ fn_bool(@as(c_int, 0) != 0); |
| 3227 | | \\ fn_bool(@ptrToInt(&fn_int) != 0); |
| 3228 | | \\ fn_int(@intCast(c_int, @ptrToInt(&fn_int))); |
| 3229 | | \\ fn_ptr(@intToPtr(?*anyopaque, @as(c_int, 42))); |
| 3230 | | \\} |
| 3231 | | }); |
| 3232 | | } |
| 3176 | if (builtin.zig_backend != .stage1) { |
| 3177 | cases.add("implicit casts", |
| 3178 | \\#include <stdbool.h> |
| 3179 | \\ |
| 3180 | \\void fn_int(int x); |
| 3181 | \\void fn_f32(float x); |
| 3182 | \\void fn_f64(double x); |
| 3183 | \\void fn_char(char x); |
| 3184 | \\void fn_bool(bool x); |
| 3185 | \\void fn_ptr(void *x); |
| 3186 | \\ |
| 3187 | \\void call() { |
| 3188 | \\ fn_int(3.0f); |
| 3189 | \\ fn_int(3.0); |
| 3190 | \\ fn_int('ABCD'); |
| 3191 | \\ fn_f32(3); |
| 3192 | \\ fn_f64(3); |
| 3193 | \\ fn_char('3'); |
| 3194 | \\ fn_char('\x1'); |
| 3195 | \\ fn_char(0); |
| 3196 | \\ fn_f32(3.0f); |
| 3197 | \\ fn_f64(3.0); |
| 3198 | \\ fn_bool(123); |
| 3199 | \\ fn_bool(0); |
| 3200 | \\ fn_bool(&fn_int); |
| 3201 | \\ fn_int((int)&fn_int); |
| 3202 | \\ fn_ptr((void *)42); |
| 3203 | \\} |
| 3204 | , &[_][]const u8{ |
| 3205 | \\pub extern fn fn_int(x: c_int) void; |
| 3206 | \\pub extern fn fn_f32(x: f32) void; |
| 3207 | \\pub extern fn fn_f64(x: f64) void; |
| 3208 | \\pub extern fn fn_char(x: u8) void; |
| 3209 | \\pub extern fn fn_bool(x: bool) void; |
| 3210 | \\pub extern fn fn_ptr(x: ?*anyopaque) void; |
| 3211 | \\pub export fn call() void { |
| 3212 | \\ fn_int(@floatToInt(c_int, 3.0)); |
| 3213 | \\ fn_int(@floatToInt(c_int, 3.0)); |
| 3214 | \\ fn_int(@as(c_int, 1094861636)); |
| 3215 | \\ fn_f32(@intToFloat(f32, @as(c_int, 3))); |
| 3216 | \\ fn_f64(@intToFloat(f64, @as(c_int, 3))); |
| 3217 | \\ fn_char(@bitCast(u8, @truncate(i8, @as(c_int, '3')))); |
| 3218 | \\ fn_char(@bitCast(u8, @truncate(i8, @as(c_int, '\x01')))); |
| 3219 | \\ fn_char(@bitCast(u8, @truncate(i8, @as(c_int, 0)))); |
| 3220 | \\ fn_f32(3.0); |
| 3221 | \\ fn_f64(3.0); |
| 3222 | \\ fn_bool(@as(c_int, 123) != 0); |
| 3223 | \\ fn_bool(@as(c_int, 0) != 0); |
| 3224 | \\ fn_bool(@ptrToInt(&fn_int) != 0); |
| 3225 | \\ fn_int(@intCast(c_int, @ptrToInt(&fn_int))); |
| 3226 | \\ fn_ptr(@intToPtr(?*anyopaque, @as(c_int, 42))); |
| 3227 | \\} |
| 3228 | }); |
| 3233 | 3229 | } |
| 3234 | 3230 | |
| 3235 | 3231 | if (builtin.zig_backend != .stage1) { |