Commit 54cf4cc
committed
[clang] Implement __builtin_stdc_rotate_left and __builtin_stdc_rotate_right
This patch adds type-generic rotate builtins that accept any unsigned integer
type. These builtins provide:
- Support for all unsigned integer types, including _BitInt
- Constexpr evaluation capability
- Automatic normalization of rotation counts modulo the bit-width
- Proper handling of negative rotation counts (converted to equivalent
positive rotations in the opposite direction)
- Implicit conversion support for both arguments, allowing bool, float, and
types with conversion operators (not limited to record types)
The builtins follow C23 naming conventions.
Resolves #1228191 parent 11571a0 commit 54cf4cc
File tree
9 files changed
+762
-16
lines changed- clang
- docs
- include/clang/Basic
- lib
- AST
- CodeGen
- Sema
- test
- CodeGen
- SemaCXX
- Sema
9 files changed
+762
-16
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3680 | 3680 | | |
3681 | 3681 | | |
3682 | 3682 | | |
| 3683 | + | |
| 3684 | + | |
| 3685 | + | |
| 3686 | + | |
| 3687 | + | |
| 3688 | + | |
| 3689 | + | |
| 3690 | + | |
| 3691 | + | |
| 3692 | + | |
| 3693 | + | |
| 3694 | + | |
| 3695 | + | |
| 3696 | + | |
| 3697 | + | |
| 3698 | + | |
| 3699 | + | |
| 3700 | + | |
| 3701 | + | |
| 3702 | + | |
| 3703 | + | |
| 3704 | + | |
| 3705 | + | |
| 3706 | + | |
| 3707 | + | |
| 3708 | + | |
| 3709 | + | |
| 3710 | + | |
| 3711 | + | |
| 3712 | + | |
| 3713 | + | |
| 3714 | + | |
| 3715 | + | |
| 3716 | + | |
| 3717 | + | |
| 3718 | + | |
3683 | 3719 | | |
3684 | 3720 | | |
3685 | 3721 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
265 | 265 | | |
266 | 266 | | |
267 | 267 | | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
268 | 273 | | |
269 | 274 | | |
270 | 275 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
767 | 767 | | |
768 | 768 | | |
769 | 769 | | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
770 | 776 | | |
771 | 777 | | |
772 | 778 | | |
773 | 779 | | |
774 | 780 | | |
775 | 781 | | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
776 | 788 | | |
777 | 789 | | |
778 | 790 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14394 | 14394 | | |
14395 | 14395 | | |
14396 | 14396 | | |
14397 | | - | |
14398 | | - | |
14399 | | - | |
14400 | | - | |
14401 | | - | |
14402 | | - | |
14403 | | - | |
14404 | | - | |
14405 | | - | |
14406 | | - | |
14407 | | - | |
14408 | | - | |
14409 | | - | |
14410 | 14397 | | |
14411 | 14398 | | |
14412 | 14399 | | |
14413 | 14400 | | |
| 14401 | + | |
| 14402 | + | |
| 14403 | + | |
| 14404 | + | |
| 14405 | + | |
| 14406 | + | |
| 14407 | + | |
14414 | 14408 | | |
14415 | 14409 | | |
14416 | 14410 | | |
| |||
14421 | 14415 | | |
14422 | 14416 | | |
14423 | 14417 | | |
14424 | | - | |
| 14418 | + | |
| 14419 | + | |
| 14420 | + | |
| 14421 | + | |
| 14422 | + | |
| 14423 | + | |
| 14424 | + | |
| 14425 | + | |
| 14426 | + | |
| 14427 | + | |
| 14428 | + | |
| 14429 | + | |
| 14430 | + | |
| 14431 | + | |
| 14432 | + | |
| 14433 | + | |
| 14434 | + | |
| 14435 | + | |
| 14436 | + | |
| 14437 | + | |
| 14438 | + | |
| 14439 | + | |
| 14440 | + | |
| 14441 | + | |
| 14442 | + | |
| 14443 | + | |
| 14444 | + | |
| 14445 | + | |
| 14446 | + | |
| 14447 | + | |
| 14448 | + | |
| 14449 | + | |
| 14450 | + | |
| 14451 | + | |
| 14452 | + | |
| 14453 | + | |
| 14454 | + | |
| 14455 | + | |
| 14456 | + | |
14425 | 14457 | | |
14426 | 14458 | | |
14427 | 14459 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2492 | 2492 | | |
2493 | 2493 | | |
2494 | 2494 | | |
2495 | | - | |
| 2495 | + | |
| 2496 | + | |
| 2497 | + | |
| 2498 | + | |
| 2499 | + | |
| 2500 | + | |
| 2501 | + | |
| 2502 | + | |
| 2503 | + | |
| 2504 | + | |
| 2505 | + | |
| 2506 | + | |
| 2507 | + | |
| 2508 | + | |
| 2509 | + | |
| 2510 | + | |
| 2511 | + | |
| 2512 | + | |
| 2513 | + | |
| 2514 | + | |
| 2515 | + | |
| 2516 | + | |
| 2517 | + | |
| 2518 | + | |
| 2519 | + | |
| 2520 | + | |
| 2521 | + | |
| 2522 | + | |
| 2523 | + | |
| 2524 | + | |
2496 | 2525 | | |
2497 | 2526 | | |
2498 | 2527 | | |
2499 | 2528 | | |
2500 | | - | |
| 2529 | + | |
2501 | 2530 | | |
2502 | 2531 | | |
2503 | 2532 | | |
| |||
3642 | 3671 | | |
3643 | 3672 | | |
3644 | 3673 | | |
| 3674 | + | |
3645 | 3675 | | |
3646 | 3676 | | |
3647 | 3677 | | |
| |||
3653 | 3683 | | |
3654 | 3684 | | |
3655 | 3685 | | |
| 3686 | + | |
3656 | 3687 | | |
3657 | 3688 | | |
3658 | 3689 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2267 | 2267 | | |
2268 | 2268 | | |
2269 | 2269 | | |
| 2270 | + | |
| 2271 | + | |
| 2272 | + | |
| 2273 | + | |
| 2274 | + | |
| 2275 | + | |
| 2276 | + | |
| 2277 | + | |
| 2278 | + | |
| 2279 | + | |
| 2280 | + | |
| 2281 | + | |
| 2282 | + | |
| 2283 | + | |
| 2284 | + | |
| 2285 | + | |
| 2286 | + | |
| 2287 | + | |
| 2288 | + | |
| 2289 | + | |
| 2290 | + | |
| 2291 | + | |
| 2292 | + | |
| 2293 | + | |
| 2294 | + | |
| 2295 | + | |
| 2296 | + | |
| 2297 | + | |
| 2298 | + | |
| 2299 | + | |
| 2300 | + | |
| 2301 | + | |
| 2302 | + | |
| 2303 | + | |
| 2304 | + | |
| 2305 | + | |
| 2306 | + | |
| 2307 | + | |
| 2308 | + | |
| 2309 | + | |
| 2310 | + | |
| 2311 | + | |
| 2312 | + | |
| 2313 | + | |
| 2314 | + | |
| 2315 | + | |
| 2316 | + | |
| 2317 | + | |
| 2318 | + | |
| 2319 | + | |
| 2320 | + | |
| 2321 | + | |
| 2322 | + | |
| 2323 | + | |
| 2324 | + | |
| 2325 | + | |
| 2326 | + | |
| 2327 | + | |
| 2328 | + | |
| 2329 | + | |
| 2330 | + | |
2270 | 2331 | | |
2271 | 2332 | | |
2272 | 2333 | | |
| |||
3458 | 3519 | | |
3459 | 3520 | | |
3460 | 3521 | | |
| 3522 | + | |
| 3523 | + | |
| 3524 | + | |
| 3525 | + | |
| 3526 | + | |
| 3527 | + | |
3461 | 3528 | | |
3462 | 3529 | | |
3463 | 3530 | | |
| |||
0 commit comments