[DO NOT MERGE] is main broken?#9239
Conversation
Pristine main + only an override matrix that builds thrust with old host compilers (gcc7 / msvc14.39) at C++17. No source changes. If CI fails with the zip_iterator iterator-concept static_asserts (added by NVIDIA#8845), it proves the breakage is in main, independent of PR NVIDIA#9200.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
OverviewThis PR investigates potential breakages in the main branch related to zip iterator functionality and single-element tuple construction. It includes a revert of a previous deletion and fixes to tuple constraint logic in libcu++. ChangesCI Configuration (
|
| Layer / File(s) | Summary |
|---|---|
Thrust override matrix entry ci/matrix.yaml |
New override entry runs build job for thrust with C++17 on CTK 12.0 using gcc7 and msvc14.39 host compilers. |
Tuple Constraint Logic
| Layer / File(s) | Summary |
|---|---|
Tuple-like constructibility selection refinement libcudacxx/include/cuda/std/__tuple_dir/tuple_constraints.h |
__tuple_select_tuple_like_constructible variadic path now gates directly on per-element is_constructible_v and determines implicit vs explicit via per-element is_convertible_v; single-element overload reworked for constraints and now uses element-specific convertibility instead of pack folds. |
Tuple nothrow constructibility refactor libcudacxx/include/cuda/std/__tuple_dir/tuple_constraints.h |
__tuple_nothrow_tuple_like_constructible replaced pack fold with recursive overload set: non-empty tuples check first element's nothrow constructibility and recurse on remainder, with explicit base case for empty tuple packs. |
Comment @coderabbitai help to get the list of available commands and usage tips.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
| // [tuple#cnstr]-29.3: sizeof...(Types) equals sizeof...(UTypes), and | ||
| return __select_constructor::__none; | ||
| } | ||
| else if constexpr ((sizeof...(_Types) == 1) && __is_cuda_std_tuple<remove_cvref_t<_UTuple>> |
There was a problem hiding this comment.
Those constraints were eagerly evaluated by gcc, which should not have happened
😬 CI Workflow Results🟥 Finished in 1h 24m: Pass: 50%/2 | Total: 2h 26m | Max: 1h 24m | Hits: 14%/17838See results here. |
Description
closes
Checklist