authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-08-26 20:49:31-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-08-26 20:54:49-07:00
logcc8f27d2db253cf75b7a62228f998b02b8a3c527
treeaf00f68750d58207ab183ca6cd6257dcbc09d092
parentf9f79508fc5317a5cf1c0a0a1be9f48e242e3d08

std.Target: refactor cTypeBitSize

1 return statement instead of N return expressions

1 files changed, 143 insertions(+), 143 deletions(-)

lib/std/Target.zig+143-143
......@@ -3214,7 +3214,7 @@ pub fn cTypeByteSize(t: *const Target, c_type: CType) ?u16 {
32143214
32153215/// Returns `null` if no C ABI is defined for this target.
32163216pub fn cTypeBitSize(target: *const Target, c_type: CType) ?u16 {
3217 switch (target.os.tag) {
3217 return switch (target.os.tag) {
32183218 .freestanding,
32193219 .other,
32203220 .ashetos,
......@@ -3222,49 +3222,49 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) ?u16 {
32223222 .msp430,
32233223 .x86_16,
32243224 => switch (c_type) {
3225 .char => return 8,
3226 .short, .ushort, .int, .uint => return 16,
3227 .float, .long, .ulong => return 32,
3228 .longlong, .ulonglong, .double, .longdouble => return 64,
3225 .char => 8,
3226 .short, .ushort, .int, .uint => 16,
3227 .float, .long, .ulong => 32,
3228 .longlong, .ulonglong, .double, .longdouble => 64,
32293229 },
32303230 .avr => switch (c_type) {
3231 .char => return 8,
3232 .short, .ushort, .int, .uint => return 16,
3233 .long, .ulong, .float, .double, .longdouble => return 32,
3234 .longlong, .ulonglong => return 64,
3231 .char => 8,
3232 .short, .ushort, .int, .uint => 16,
3233 .long, .ulong, .float, .double, .longdouble => 32,
3234 .longlong, .ulonglong => 64,
32353235 },
32363236 .mips64,
32373237 .mips64el,
32383238 => switch (c_type) {
3239 .char => return 8,
3240 .short, .ushort => return 16,
3241 .int, .uint, .float => return 32,
3239 .char => 8,
3240 .short, .ushort => 16,
3241 .int, .uint, .float => 32,
32423242 .long, .ulong => switch (target.abi) {
3243 .abin32 => return 32,
3244 else => return 64,
3243 .abin32 => 32,
3244 else => 64,
32453245 },
3246 .longlong, .ulonglong, .double => return 64,
3247 .longdouble => return 128,
3246 .longlong, .ulonglong, .double => 64,
3247 .longdouble => 128,
32483248 },
32493249 .x86_64 => switch (c_type) {
3250 .char => return 8,
3251 .short, .ushort => return 16,
3252 .int, .uint, .float => return 32,
3250 .char => 8,
3251 .short, .ushort => 16,
3252 .int, .uint, .float => 32,
32533253 .long, .ulong => switch (target.abi) {
3254 .x32 => return 32,
3255 else => return 64,
3254 .x32 => 32,
3255 else => 64,
32563256 },
3257 .longlong, .ulonglong, .double => return 64,
3258 .longdouble => return 80,
3257 .longlong, .ulonglong, .double => 64,
3258 .longdouble => 80,
32593259 },
32603260 else => switch (c_type) {
3261 .char => return 8,
3262 .short, .ushort => return 16,
3263 .int, .uint, .float => return 32,
3264 .long, .ulong => return target.ptrBitWidth(),
3265 .longlong, .ulonglong, .double => return 64,
3261 .char => 8,
3262 .short, .ushort => 16,
3263 .int, .uint, .float => 32,
3264 .long, .ulong => target.ptrBitWidth(),
3265 .longlong, .ulonglong, .double => 64,
32663266 .longdouble => switch (target.cpu.arch) {
3267 .x86 => return 80,
3267 .x86 => 80,
32683268
32693269 .alpha,
32703270 .riscv32,
......@@ -3284,9 +3284,9 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) ?u16 {
32843284 .loongarch32,
32853285 .loongarch64,
32863286 .ve,
3287 => return 128,
3287 => 128,
32883288
3289 else => return 64,
3289 else => 64,
32903290 },
32913291 },
32923292 },
......@@ -3313,60 +3313,60 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) ?u16 {
33133313 .mips64,
33143314 .mips64el,
33153315 => switch (c_type) {
3316 .char => return 8,
3317 .short, .ushort => return 16,
3318 .int, .uint, .float => return 32,
3316 .char => 8,
3317 .short, .ushort => 16,
3318 .int, .uint, .float => 32,
33193319 .long, .ulong => switch (target.abi) {
3320 .gnuabin32, .muslabin32, .abin32 => return 32,
3321 else => return 64,
3320 .gnuabin32, .muslabin32, .abin32 => 32,
3321 else => 64,
33223322 },
3323 .longlong, .ulonglong, .double => return 64,
3324 .longdouble => return 128,
3323 .longlong, .ulonglong, .double => 64,
3324 .longdouble => 128,
33253325 },
33263326 .x86_64 => switch (c_type) {
3327 .char => return 8,
3328 .short, .ushort => return 16,
3329 .int, .uint, .float => return 32,
3327 .char => 8,
3328 .short, .ushort => 16,
3329 .int, .uint, .float => 32,
33303330 .long, .ulong => switch (target.abi) {
3331 .gnux32, .muslx32, .x32 => return 32,
3332 else => return 64,
3331 .gnux32, .muslx32, .x32 => 32,
3332 else => 64,
33333333 },
3334 .longlong, .ulonglong, .double => return 64,
3335 .longdouble => return 80,
3334 .longlong, .ulonglong, .double => 64,
3335 .longdouble => 80,
33363336 },
33373337 else => switch (c_type) {
3338 .char => return 8,
3339 .short, .ushort => return 16,
3340 .int, .uint, .float => return 32,
3341 .long, .ulong => return target.ptrBitWidth(),
3342 .longlong, .ulonglong, .double => return 64,
3338 .char => 8,
3339 .short, .ushort => 16,
3340 .int, .uint, .float => 32,
3341 .long, .ulong => target.ptrBitWidth(),
3342 .longlong, .ulonglong, .double => 64,
33433343 .longdouble => switch (target.cpu.arch) {
33443344 .x86 => switch (target.abi) {
3345 .android => return 64,
3346 else => return 80,
3345 .android => 64,
3346 else => 80,
33473347 },
33483348
33493349 .powerpc,
33503350 .powerpcle,
33513351 => switch (target.abi) {
3352 .musleabi, .musleabihf => return 64,
3352 .musleabi, .musleabihf => 64,
33533353 else => switch (target.os.tag) {
33543354 .netbsd,
33553355 .openbsd,
3356 => return 64,
3357 else => return 128,
3356 => 64,
3357 else => 128,
33583358 },
33593359 },
33603360
33613361 .powerpc64,
33623362 .powerpc64le,
33633363 => switch (target.abi) {
3364 .musl => return 64,
3364 .musl => 64,
33653365 else => switch (target.os.tag) {
33663366 .freebsd,
33673367 .openbsd,
3368 => return 64,
3369 else => return 128,
3368 => 64,
3369 else => 128,
33703370 },
33713371 },
33723372
......@@ -3386,43 +3386,43 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) ?u16 {
33863386 .loongarch32,
33873387 .loongarch64,
33883388 .ve,
3389 => return 128,
3389 => 128,
33903390
3391 else => return 64,
3391 else => 64,
33923392 },
33933393 },
33943394 },
33953395
33963396 .windows, .uefi => switch (target.cpu.arch) {
33973397 .x86 => switch (c_type) {
3398 .char => return 8,
3399 .short, .ushort => return 16,
3400 .int, .uint, .float => return 32,
3401 .long, .ulong => return 32,
3402 .longlong, .ulonglong, .double => return 64,
3398 .char => 8,
3399 .short, .ushort => 16,
3400 .int, .uint, .float => 32,
3401 .long, .ulong => 32,
3402 .longlong, .ulonglong, .double => 64,
34033403 .longdouble => switch (target.abi) {
3404 .gnu => return 80,
3405 else => return 64,
3404 .gnu => 80,
3405 else => 64,
34063406 },
34073407 },
34083408 .x86_64 => switch (c_type) {
3409 .char => return 8,
3410 .short, .ushort => return 16,
3411 .int, .uint, .float => return 32,
3412 .long, .ulong => return 32,
3413 .longlong, .ulonglong, .double => return 64,
3409 .char => 8,
3410 .short, .ushort => 16,
3411 .int, .uint, .float => 32,
3412 .long, .ulong => 32,
3413 .longlong, .ulonglong, .double => 64,
34143414 .longdouble => switch (target.abi) {
3415 .gnu => return 80,
3416 else => return 64,
3415 .gnu => 80,
3416 else => 64,
34173417 },
34183418 },
34193419 else => switch (c_type) {
3420 .char => return 8,
3421 .short, .ushort => return 16,
3422 .int, .uint, .float => return 32,
3423 .long, .ulong => return 32,
3424 .longlong, .ulonglong, .double => return 64,
3425 .longdouble => return 64,
3420 .char => 8,
3421 .short, .ushort => 16,
3422 .int, .uint, .float => 32,
3423 .long, .ulong => 32,
3424 .longlong, .ulonglong, .double => 64,
3425 .longdouble => 64,
34263426 },
34273427 },
34283428
......@@ -3434,113 +3434,113 @@ pub fn cTypeBitSize(target: *const Target, c_type: CType) ?u16 {
34343434 .visionos,
34353435 .watchos,
34363436 => switch (c_type) {
3437 .char => return 8,
3438 .short, .ushort => return 16,
3439 .int, .uint, .float => return 32,
3437 .char => 8,
3438 .short, .ushort => 16,
3439 .int, .uint, .float => 32,
34403440 .long, .ulong => switch (target.cpu.arch) {
3441 .x86_64 => return 64,
3441 .x86_64 => 64,
34423442 else => switch (target.abi) {
3443 .ilp32 => return 32,
3444 else => return 64,
3443 .ilp32 => 32,
3444 else => 64,
34453445 },
34463446 },
3447 .longlong, .ulonglong, .double => return 64,
3447 .longlong, .ulonglong, .double => 64,
34483448 .longdouble => switch (target.cpu.arch) {
3449 .x86_64 => return 80,
3450 else => return 64,
3449 .x86_64 => 80,
3450 else => 64,
34513451 },
34523452 },
34533453
34543454 .nvcl, .cuda => switch (c_type) {
3455 .char => return 8,
3456 .short, .ushort => return 16,
3457 .int, .uint, .float => return 32,
3455 .char => 8,
3456 .short, .ushort => 16,
3457 .int, .uint, .float => 32,
34583458 .long, .ulong => switch (target.cpu.arch) {
3459 .nvptx => return 32,
3460 .nvptx64 => return 64,
3461 else => return 64,
3459 .nvptx => 32,
3460 .nvptx64 => 64,
3461 else => 64,
34623462 },
3463 .longlong, .ulonglong, .double => return 64,
3464 .longdouble => return 64,
3463 .longlong, .ulonglong, .double => 64,
3464 .longdouble => 64,
34653465 },
34663466
34673467 .amdhsa, .amdpal, .mesa3d => switch (c_type) {
3468 .char => return 8,
3469 .short, .ushort => return 16,
3470 .int, .uint, .float => return 32,
3471 .long, .ulong, .longlong, .ulonglong, .double => return 64,
3472 .longdouble => return 128,
3468 .char => 8,
3469 .short, .ushort => 16,
3470 .int, .uint, .float => 32,
3471 .long, .ulong, .longlong, .ulonglong, .double => 64,
3472 .longdouble => 128,
34733473 },
34743474
34753475 .opencl, .vulkan => switch (c_type) {
3476 .char => return 8,
3477 .short, .ushort => return 16,
3478 .int, .uint, .float => return 32,
3479 .long, .ulong, .double => return 64,
3480 .longlong, .ulonglong => return 128,
3476 .char => 8,
3477 .short, .ushort => 16,
3478 .int, .uint, .float => 32,
3479 .long, .ulong, .double => 64,
3480 .longlong, .ulonglong => 128,
34813481 // Note: The OpenCL specification does not guarantee a particular size for long double,
34823482 // but clang uses 128 bits.
3483 .longdouble => return 128,
3483 .longdouble => 128,
34843484 },
34853485
34863486 .@"3ds" => switch (c_type) {
3487 .char => return 8,
3488 .short, .ushort => return 16,
3489 .int, .uint, .float, .long, .ulong => return 32,
3490 .longlong, .ulonglong, .double, .longdouble => return 64,
3487 .char => 8,
3488 .short, .ushort => 16,
3489 .int, .uint, .float, .long, .ulong => 32,
3490 .longlong, .ulonglong, .double, .longdouble => 64,
34913491 },
34923492
34933493 .wiiu => switch (c_type) {
3494 .char => return 8,
3495 .short, .ushort => return 16,
3496 .int, .uint, .float, .long, .ulong => return 32,
3497 .longlong, .ulonglong, .double, .longdouble => return 64,
3494 .char => 8,
3495 .short, .ushort => 16,
3496 .int, .uint, .float, .long, .ulong => 32,
3497 .longlong, .ulonglong, .double, .longdouble => 64,
34983498 },
34993499
35003500 .@"switch" => switch (c_type) {
3501 .char => return 8,
3502 .short, .ushort => return 16,
3503 .int, .uint, .float => return 32,
3504 .long, .ulong, .longlong, .ulonglong, .double => return 64,
3505 .longdouble => return 128,
3501 .char => 8,
3502 .short, .ushort => 16,
3503 .int, .uint, .float => 32,
3504 .long, .ulong, .longlong, .ulonglong, .double => 64,
3505 .longdouble => 128,
35063506 },
35073507
35083508 .psx => switch (c_type) {
3509 .char => return 8,
3510 .short, .ushort => return 16,
3511 .int, .uint, .long, .ulong, .float => return 32,
3512 .longlong, .ulonglong, .double, .longdouble => return 64,
3509 .char => 8,
3510 .short, .ushort => 16,
3511 .int, .uint, .long, .ulong, .float => 32,
3512 .longlong, .ulonglong, .double, .longdouble => 64,
35133513 },
35143514 .ps4, .ps5 => switch (c_type) {
3515 .char => return 8,
3516 .short, .ushort => return 16,
3517 .int, .uint, .float => return 32,
3518 .long, .ulong => return 64,
3519 .longlong, .ulonglong, .double => return 64,
3520 .longdouble => return 80,
3515 .char => 8,
3516 .short, .ushort => 16,
3517 .int, .uint, .float => 32,
3518 .long, .ulong => 64,
3519 .longlong, .ulonglong, .double => 64,
3520 .longdouble => 80,
35213521 },
35223522 .psp, .vita => switch (c_type) {
3523 .char => return 8,
3524 .short, .ushort => return 16,
3525 .int, .uint, .float => return 32,
3526 .long, .ulong => return 64,
3527 .longlong, .ulonglong, .double, .longdouble => return 64,
3523 .char => 8,
3524 .short, .ushort => 16,
3525 .int, .uint, .float => 32,
3526 .long, .ulong => 64,
3527 .longlong, .ulonglong, .double, .longdouble => 64,
35283528 },
35293529 .tios => switch (c_type) {
3530 .char => return 8,
3531 .short, .ushort => return 16,
3532 .int, .uint => return 24,
3533 .long, .ulong, .float, .double => return 32,
3534 .longlong, .ulonglong, .longdouble => return 64,
3530 .char => 8,
3531 .short, .ushort => 16,
3532 .int, .uint => 24,
3533 .long, .ulong, .float, .double => 32,
3534 .longlong, .ulonglong, .longdouble => 64,
35353535 },
35363536
3537 .opengl => return null,
3537 .opengl => null,
35383538
35393539 .ps3,
35403540 .contiki,
35413541 .managarm,
35423542 => @panic("specify the C integer and float type sizes for this OS"),
3543 }
3543 };
35443544}
35453545
35463546/// Returns `null` if no C ABI is defined for this target.