From bcc371618fd71185e71a889c09eb68733ca66842 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 7 Apr 2021 10:24:57 -0700 Subject: [PATCH] AstGen: fix `@breakpoint` ZIR Previously it relied on the breakpoint ZIR instruction being void, but that's no longer how things work. --- src/AstGen.zig | 4 ++-- test/stage2/cbe.zig | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/AstGen.zig b/src/AstGen.zig index 6c3ce1251c..a059ab04cb 100644 --- a/src/AstGen.zig +++ b/src/AstGen.zig @@ -3894,11 +3894,11 @@ fn builtinCall( return rvalue(gz, scope, rl, result, node); }, .breakpoint => { - const result = try gz.add(.{ + _ = try gz.add(.{ .tag = .breakpoint, .data = .{ .node = gz.astgen.decl.nodeIndexToRelative(node) }, }); - return rvalue(gz, scope, rl, result, node); + return rvalue(gz, scope, rl, .void_value, node); }, .import => { const target = try expr(gz, scope, .none, params[0]); diff --git a/test/stage2/cbe.zig b/test/stage2/cbe.zig index bfab645323..a6d47b40a9 100644 --- a/test/stage2/cbe.zig +++ b/test/stage2/cbe.zig @@ -280,6 +280,15 @@ pub fn addCases(ctx: *TestContext) !void { \\} , ""); + // If expression with breakpoint that does not get hit + case.addCompareOutput( + \\export fn main() c_int { + \\ var x: i32 = 1; + \\ if (x != 1) @breakpoint(); + \\ return 0; + \\} + , ""); + // Switch expression case.addCompareOutput( \\export fn main() c_int {