authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2022-10-10 00:47:45-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2022-10-25 05:11:29-04:00
log5eafc10bf41451fb694f324dcaefe5c458e1ca3a
tree45ee1879f0a2b0b6b198cb4136f04e5cc1868de9
parentc126a1018eec54c568aaa642013e3c86bdd6d3e4

cbe: fix global access fix


9 files changed, 4 insertions(+), 22 deletions(-)

src/codegen/c.zig+4-3
......@@ -393,7 +393,10 @@ pub const DeclGen = struct {
393393 val: Value,
394394 decl_index: Decl.Index,
395395 ) error{ OutOfMemory, AnalysisFail }!void {
396 if (ty.isPtrAtRuntime() and !ty.elemType2().isFnOrHasRuntimeBits()) {
396 const decl = dg.module.declPtr(decl_index);
397 assert(decl.has_tv);
398
399 if (ty.isPtrAtRuntime() and !decl.ty.isFnOrHasRuntimeBits()) {
397400 return dg.writeCValue(writer, CValue{ .undefined_ptr = ty });
398401 }
399402
......@@ -409,8 +412,6 @@ pub const DeclGen = struct {
409412 return;
410413 }
411414
412 const decl = dg.module.declPtr(decl_index);
413 assert(decl.has_tv);
414415 // We shouldn't cast C function pointers as this is UB (when you call
415416 // them). The analysis until now should ensure that the C function
416417 // pointers are compatible. If they are not, then there is a bug
test/behavior/bugs/12984.zig-1
......@@ -14,7 +14,6 @@ pub const CustomDraw = DeleagateWithContext(fn (?OnConfirm) void);
1414test "simple test" {
1515 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1616 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
17 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1817 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1918
2019 var c: CustomDraw = undefined;
test/behavior/bugs/1914.zig-1
......@@ -29,6 +29,5 @@ pub const B2 = struct {
2929var b_value = B2{ .pointer_array = &[_]*A2{} };
3030
3131test "basic stuff" {
32 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
3332 std.debug.assert(&b_value == &b_value);
3433}
test/behavior/cast.zig-7
......@@ -450,7 +450,6 @@ fn castToOptionalTypeError(z: i32) !void {
450450
451451test "implicitly cast from [0]T to anyerror![]T" {
452452 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
453 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
454453
455454 try testCastZeroArrayToErrSliceMut();
456455 comptime try testCastZeroArrayToErrSliceMut();
......@@ -466,7 +465,6 @@ fn gimmeErrOrSlice() anyerror![]u8 {
466465
467466test "peer type resolution: [0]u8, []const u8, and anyerror![]u8" {
468467 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
469 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
470468 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
471469
472470 const S = struct {
......@@ -810,7 +808,6 @@ test "peer type resolution: error union after non-error" {
810808test "peer cast *[0]T to E![]const T" {
811809 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
812810 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
813 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
814811 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
815812
816813 var buffer: [5]u8 = "abcde".*;
......@@ -825,7 +822,6 @@ test "peer cast *[0]T to E![]const T" {
825822test "peer cast *[0]T to []const T" {
826823 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
827824 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
828 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
829825 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
830826
831827 var buffer: [5]u8 = "abcde".*;
......@@ -1131,7 +1127,6 @@ fn returnNullLitFromOptionalTypeErrorRef() anyerror!?*A {
11311127
11321128test "peer type resolution: [0]u8 and []const u8" {
11331129 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1134 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
11351130
11361131 try expect(peerTypeEmptyArrayAndSlice(true, "hi").len == 0);
11371132 try expect(peerTypeEmptyArrayAndSlice(false, "hi").len == 1);
......@@ -1214,7 +1209,6 @@ fn incrementVoidPtrValue(value: ?*anyopaque) void {
12141209
12151210test "implicit cast *[0]T to E![]const u8" {
12161211 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1217 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
12181212
12191213 var x = @as(anyerror![]const u8, &[0]u8{});
12201214 try expect((x catch unreachable).len == 0);
......@@ -1386,7 +1380,6 @@ test "coerce undefined single-item pointer of array to error union of slice" {
13861380}
13871381
13881382test "pointer to empty struct literal to mutable slice" {
1389 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
13901383 var x: []i32 = &.{};
13911384 try expect(x.len == 0);
13921385}
test/behavior/fn.zig-1
......@@ -405,7 +405,6 @@ test "function with inferred error set but returning no error" {
405405}
406406
407407test "import passed byref to function in return type" {
408 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
409408 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
410409
411410 const S = struct {
test/behavior/slice.zig-3
......@@ -169,7 +169,6 @@ test "comptime pointer cast array and then slice" {
169169
170170test "slicing zero length array" {
171171 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
172 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
173172 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
174173
175174 const s1 = ""[0..];
......@@ -206,8 +205,6 @@ test "slice string literal has correct type" {
206205}
207206
208207test "result location zero sized array inside struct field implicit cast to slice" {
209 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
210
211208 const E = struct {
212209 entries: []u32,
213210 };
test/behavior/struct.zig-1
......@@ -365,7 +365,6 @@ const EmptyStruct = struct {
365365
366366test "align 1 field before self referential align 8 field as slice return type" {
367367 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
368 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
369368 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
370369
371370 const result = alloc(Expr);
test/behavior/struct_contains_slice_of_itself.zig-2
......@@ -12,7 +12,6 @@ const NodeAligned = struct {
1212};
1313
1414test "struct contains slice of itself" {
15 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1615 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1716
1817 var other_nodes = [_]Node{
......@@ -52,7 +51,6 @@ test "struct contains slice of itself" {
5251}
5352
5453test "struct contains aligned slice of itself" {
55 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
5654 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5755
5856 var other_nodes = [_]NodeAligned{
test/behavior/tuple.zig-3
......@@ -257,7 +257,6 @@ test "initializing anon struct with mixed comptime-runtime fields" {
257257}
258258
259259test "tuple in tuple passed to generic function" {
260 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
261260 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
262261 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
263262 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
......@@ -277,7 +276,6 @@ test "tuple in tuple passed to generic function" {
277276}
278277
279278test "coerce tuple to tuple" {
280 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
281279 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
282280 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
283281 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
......@@ -292,7 +290,6 @@ test "coerce tuple to tuple" {
292290}
293291
294292test "tuple type with void field" {
295 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
296293 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
297294 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
298295 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO