aboutsummaryrefslogtreecommitdiff
path: root/src/codegen/c.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-05-11 08:36:33 -0700
committerGitHub <noreply@github.com>2023-05-11 08:36:33 -0700
commit5569e6b49d9b421d35e3175df36eb9fe7e4e8084 (patch)
tree4622b826b87d84de1abc3598de27317d92f21041 /src/codegen/c.zig
parentc857959372ec87e3988c2548876d818d92df5f9a (diff)
parent2e6a6d7564901009aace5fef99e647959ad5bb90 (diff)
downloadzig-5569e6b49d9b421d35e3175df36eb9fe7e4e8084.tar.gz
zig-5569e6b49d9b421d35e3175df36eb9fe7e4e8084.zip
Merge pull request #15639 from jacobly0/signed-mod
llvm/cbe: fix signed `@mod`/`@divFloor` computations
Diffstat (limited to 'src/codegen/c.zig')
-rw-r--r--src/codegen/c.zig13
1 files changed, 3 insertions, 10 deletions
diff --git a/src/codegen/c.zig b/src/codegen/c.zig
index 7da99de5c1..86b74b1429 100644
--- a/src/codegen/c.zig
+++ b/src/codegen/c.zig
@@ -6508,23 +6508,16 @@ fn airSplat(f: *Function, inst: Air.Inst.Index) !CValue {
const inst_ty = f.air.typeOfIndex(inst);
const inst_scalar_ty = inst_ty.scalarType();
- const inst_scalar_cty = try f.typeToIndex(inst_scalar_ty, .complete);
- const need_memcpy = f.indexToCType(inst_scalar_cty).tag() == .array;
const writer = f.object.writer();
const local = try f.allocLocal(inst, inst_ty);
const v = try Vectorize.start(f, inst, writer, inst_ty);
- if (need_memcpy) try writer.writeAll("memcpy(&");
+ const a = try Assignment.init(f, inst_scalar_ty);
try f.writeCValue(writer, local, .Other);
try v.elem(f, writer);
- try writer.writeAll(if (need_memcpy) ", &" else " = ");
+ try a.assign(f, writer);
try f.writeCValue(writer, operand, .Other);
- if (need_memcpy) {
- try writer.writeAll(", sizeof(");
- try f.renderCType(writer, inst_scalar_cty);
- try writer.writeAll("))");
- }
- try writer.writeAll(";\n");
+ try a.end(f, writer);
try v.end(f, inst, writer);
return local;