zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit ccf00ccdf71fae7ecd25d9b1bf11dc7eb52d5d1d (tree)
parent 6ab04b59417eb9c7fff81ea26424c2340dc72097
Author: Eric Milliken <11590808+mllken@users.noreply.github.com>
Date:   Mon,  6 Mar 2023 22:28:11 +0000

crypto.25519.field: de-inline mul for small builds (#14775)


Diffstat:
Mlib/std/crypto/25519/field.zig | 9++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/lib/std/crypto/25519/field.zig b/lib/std/crypto/25519/field.zig @@ -1,4 +1,5 @@ const std = @import("std"); +const builtin = @import("builtin"); const crypto = std.crypto; const readIntLittle = std.mem.readIntLittle; const writeIntLittle = std.mem.writeIntLittle; @@ -6,6 +7,12 @@ const writeIntLittle = std.mem.writeIntLittle; const NonCanonicalError = crypto.errors.NonCanonicalError; const NotSquareError = crypto.errors.NotSquareError; +// Inline conditionally, when it can result in large code generation. +const bloaty_inline = switch (builtin.mode) { + .ReleaseSafe, .ReleaseFast => .Inline, + .Debug, .ReleaseSmall => .Unspecified, +}; + pub const Fe = struct { limbs: [5]u64, @@ -264,7 +271,7 @@ pub const Fe = struct { } /// Multiply two field elements - pub inline fn mul(a: Fe, b: Fe) Fe { + pub fn mul(a: Fe, b: Fe) callconv(bloaty_inline) Fe { var ax: [5]u128 = undefined; var bx: [5]u128 = undefined; var a19: [5]u128 = undefined;