Commit d799a66
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 e706a30 commit d799a66
File tree
9 files changed
+737
-16
lines changed- clang
- docs
- include/clang/Basic
- lib
- AST
- CodeGen
- Sema
- test
- CodeGen
- SemaCXX
- Sema
9 files changed
+737
-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 | + | |
3683 | 3718 | | |
3684 | 3719 | | |
3685 | 3720 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
255 | 255 | | |
256 | 256 | | |
257 | 257 | | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
258 | 263 | | |
259 | 264 | | |
260 | 265 | | |
| |||
| 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 | |
|---|---|---|---|
| |||
14346 | 14346 | | |
14347 | 14347 | | |
14348 | 14348 | | |
14349 | | - | |
14350 | | - | |
14351 | | - | |
14352 | | - | |
14353 | | - | |
14354 | | - | |
14355 | | - | |
14356 | | - | |
14357 | | - | |
14358 | | - | |
14359 | | - | |
14360 | | - | |
14361 | | - | |
14362 | 14349 | | |
14363 | 14350 | | |
14364 | 14351 | | |
14365 | 14352 | | |
| 14353 | + | |
| 14354 | + | |
| 14355 | + | |
| 14356 | + | |
| 14357 | + | |
| 14358 | + | |
| 14359 | + | |
14366 | 14360 | | |
14367 | 14361 | | |
14368 | 14362 | | |
| |||
14373 | 14367 | | |
14374 | 14368 | | |
14375 | 14369 | | |
14376 | | - | |
| 14370 | + | |
| 14371 | + | |
| 14372 | + | |
| 14373 | + | |
| 14374 | + | |
| 14375 | + | |
| 14376 | + | |
| 14377 | + | |
| 14378 | + | |
| 14379 | + | |
| 14380 | + | |
| 14381 | + | |
| 14382 | + | |
| 14383 | + | |
| 14384 | + | |
| 14385 | + | |
| 14386 | + | |
| 14387 | + | |
| 14388 | + | |
| 14389 | + | |
| 14390 | + | |
| 14391 | + | |
| 14392 | + | |
| 14393 | + | |
| 14394 | + | |
| 14395 | + | |
| 14396 | + | |
| 14397 | + | |
| 14398 | + | |
| 14399 | + | |
| 14400 | + | |
| 14401 | + | |
| 14402 | + | |
| 14403 | + | |
| 14404 | + | |
| 14405 | + | |
| 14406 | + | |
| 14407 | + | |
| 14408 | + | |
14377 | 14409 | | |
14378 | 14410 | | |
14379 | 14411 | | |
| |||
| 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