diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-10-26 00:30:17 +0300 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-10-27 21:08:25 -0400 |
| commit | d03c47bf85b17f7727d2f1fe5bd497b311c9eba7 (patch) | |
| tree | fc2008e0adbee552fd72215614eefe7e111dbf5d /src/codegen | |
| parent | 398a3aae40bc03f6b7c6cd86d78a4cde125f2811 (diff) | |
| download | zig-d03c47bf85b17f7727d2f1fe5bd497b311c9eba7.tar.gz zig-d03c47bf85b17f7727d2f1fe5bd497b311c9eba7.zip | |
Sema: use `runtime_value` instead of creating allocs
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/c.zig | 6 | ||||
| -rw-r--r-- | src/codegen/llvm.zig | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig index d6584d75ae..d0f76f0390 100644 --- a/src/codegen/c.zig +++ b/src/codegen/c.zig @@ -555,9 +555,13 @@ pub const DeclGen = struct { dg: *DeclGen, writer: anytype, ty: Type, - val: Value, + arg_val: Value, location: ValueRenderLocation, ) error{ OutOfMemory, AnalysisFail }!void { + var val = arg_val; + if (val.castTag(.runtime_value)) |rt| { + val = rt.data; + } const target = dg.module.getTarget(); if (val.isUndefDeep()) { switch (ty.zigTypeTag()) { diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index ffc19cb6f6..938770629f 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -3187,7 +3187,11 @@ pub const DeclGen = struct { return llvm_elem_ty; } - fn lowerValue(dg: *DeclGen, tv: TypedValue) Error!*llvm.Value { + fn lowerValue(dg: *DeclGen, arg_tv: TypedValue) Error!*llvm.Value { + var tv = arg_tv; + if (tv.val.castTag(.runtime_value)) |rt| { + tv.val = rt.data; + } if (tv.val.isUndef()) { const llvm_type = try dg.lowerType(tv.ty); return llvm_type.getUndef(); |
