aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-03-03 18:40:16 +0100
committerJakub Konka <kubkon@jakubkonka.com>2023-03-03 18:40:16 +0100
commitc413ac100fa5a4cece5702d3afb6b0898e9c6214 (patch)
tree0f9952ece962a66a1365bb62e4212c77f2af1b63
parent1024332adc88928299dfc07426f11624ae8ba18b (diff)
downloadzig-c413ac100fa5a4cece5702d3afb6b0898e9c6214.tar.gz
zig-c413ac100fa5a4cece5702d3afb6b0898e9c6214.zip
codegen: refactor generating Int as immediate where appropriate
-rw-r--r--src/codegen.zig11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index 245745d6f6..7e7f34f992 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -1051,11 +1051,12 @@ pub fn genTypedValue(
},
.Int => {
const info = typed_value.ty.intInfo(target);
- if (info.bits <= ptr_bits and info.signedness == .signed) {
- return GenResult.mcv(.{ .immediate = @bitCast(u64, typed_value.val.toSignedInt(target)) });
- }
- if (!(info.bits > ptr_bits or info.signedness == .signed)) {
- return GenResult.mcv(.{ .immediate = typed_value.val.toUnsignedInt(target) });
+ if (info.bits <= ptr_bits) {
+ const unsigned = switch (info.signedness) {
+ .signed => @bitCast(u64, typed_value.val.toSignedInt(target)),
+ .unsigned => typed_value.val.toUnsignedInt(target),
+ };
+ return GenResult.mcv(.{ .immediate = unsigned });
}
},
.Bool => {