| Age | Commit message (Collapse) | Author | Lines |
|
Signed-off-by: Karan Janthe <karanjanthe@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Add specific tests for f32, f64, i32, f16, f128 TypeTree generation
- Verify correct enzyme_type metadata for each scalar type
- Ensure TypeTree metadata matches expected Enzyme format
Signed-off-by: Karan Janthe <karanjanthe@gmail.com>
|
|
- Fix nott-flag test to emit LLVM IR and check enzyme_type attributes
- Replace TODO comments with actual TypeTree metadata verification
- Test that NoTT flag properly disables TypeTree generation
- Test that TypeTree enabled generates proper enzyme_type attributes
Signed-off-by: Karan Janthe <karanjanthe@gmail.com>
|
|
- Add F128 support to TypeTree Kind enum
- Implement TypeTree FFI bindings and conversion functions
- Add typetree.rs module for metadata attachment to LLVM functions
- Integrate TypeTree generation with autodiff intrinsic pipeline
- Support scalar types: f32, f64, integers, f16, f128
- Attach enzyme_type attributes as LLVM string metadata for Enzyme
Signed-off-by: Karan Janthe <karanjanthe@gmail.com>
|
|
Signed-off-by: Karan Janthe <karanjanthe@gmail.com>
|
|
Specialize `Iterator::eq{_by}` for `TrustedLen` iterators
I'm sure I got some stuff wrong here, but opening this to get feedback and make sure it's a viable idea at all.
### Motivation
I had a piece of code that open-coded `Iterator::eq`, something like:
```rust
if current.len() != other.len()
|| current.iter().zip(other.iter()).any(|(a, b)| a != b) { ... }
```
... where both `current` and `other` are slices of the same type.
Changing the code to use `current.iter().eq(other)` made it a lot slower, since it wasn't checking the length of the two slices beforehand anymore, which in this instance made a big difference in perf. So I thought I'd see if I can improve `Iterator::eq`.
### Questions
1. I can't specialize for `ExactSizeIterator`, I think it's a limitation of `min_specialization` but not sure exactly why. Is specializing for `TrustedLen` good enough?
2. Should I make a codegen test for this? If so, then how? (I manually checked the assembly to make sure it works as expected)
3. Where should I put `SpecIterCompare`?
4. Can I get a perf run for this, please? I think the compiler uses this in a few places, so it might have an affect.
|
|
Clippy subtree update
r? `@Manishearth`
`Cargo.lock` update due to release/Clippy version bump.
|
|
|
|
Rollup of 6 pull requests
Successful merges:
- rust-lang/rust#146434 (c-variadic: allow c-variadic inherent and trait methods)
- rust-lang/rust#146487 (Improve `core::num` coverage)
- rust-lang/rust#146597 (Add span for struct tail recursion limit error)
- rust-lang/rust#146622 (Add regression test for issue rust-lang/rust#91831)
- rust-lang/rust#146717 (Clean up universe evaluation during type test evaluation)
- rust-lang/rust#146723 (Include patch in release notes)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
|
|
clippy-subtree-update
|
|
Include patch in release notes
This should fix triagebot publication of the GitHub release on merge.
|
|
Clean up universe evaluation during type test evaluation
The logic was, as the removed comments suggest, hackish and meant to implement previous logic that was factored out. The new logic does exactly what the comments say, and is much less surprising.
I'm afraid we may want
r? `@lcnr`
for this one too.
I am sorry, but at least it should be easier to review.
|
|
Add regression test for issue #91831
The requested test for rust-lang/rust#91831. I'm unsure about the filename, the file structure in `tests/ui/lifetimes/lifetime-errors/` isn't entirely clear to me. Any suggestions?
Closes rust-lang/rust#91831
|
|
r=oli-obk
Add span for struct tail recursion limit error
Fixes rust-lang/rust#135629
Changes
1. Add span to RecursionLimitReached
2. Add ObligationCause parameter to struct_tail_raw
4. Update call sites to pass nearby ObligationCause or create one
5. Update affected .stderr
|
|
Improve `core::num` coverage
This PR improves the `core::num` coverage by adding a new test to `coretests`.
r? libs
|
|
r=workingjubilee
c-variadic: allow c-variadic inherent and trait methods
tracking issue: https://github.com/rust-lang/rust/issues/44930
Continuing the work of https://github.com/rust-lang/rust/pull/146342, allow inherent and trait methods to be c-variadic. However, a trait that contains a c-variadic method is no longer dyn-compatible.
There is, presumably, some way to make c-variadic methods dyn-compatible. However currently, we don't have confidence that it'll work reliably: when methods from a `dyn` object are cast to a function pointer, a `ReifyShim` is created. If that shim is c-variadic, it would need to forward the C variable argument list.
That does appear to work, because the `va_list` is not represented in MIR at all in this case, so the registers from the call site are untouched by the shim and can be read by the actual implementation. That just does not seem like a solid implementation.
Also, intuitively, why would c-variadic function, primarily needed for FFI, need to be used with `dyn` objects at all? We can revisit this limitation if a need arises.
r? `@workingjubilee`
|
|
r? @ghost
changelog: none
|
|
|
|
|
|
|
|
Needed to split the lints crate.
changelog: split `redundant_clone` iterator checks into
`redundant_iter_cloned`
<!-- TRIAGEBOT_START -->
<!-- TRIAGEBOT_SUMMARY_START -->
### Summary Notes
-
[Feature-freeze](https://github.com/rust-lang/rust-clippy/pull/15277#issuecomment-3073454006)
by [github-actions[bot]](https://github.com/github-actions[bot])
*Managed by `@rustbot`—see
[help](https://forge.rust-lang.org/triagebot/note.html) for details*
<!-- TRIAGEBOT_SUMMARY_END -->
<!-- TRIAGEBOT_END -->
|
|
`-Znext-solver` allow `ExprKind::Call` for not-yet defined opaques
Based on https://github.com/rust-lang/rust/pull/146329. Revival of rust-lang/rust#140496. See the comment on `OpaqueTypesJank`. I've used the following document while working on this https://hackmd.io/Js61f8PRTcyaiyqS-fH9iQ.
Fixes https://github.com/rust-lang/trait-system-refactor-initiative/issues/181. It does introduce one subtle footgun we may want to handle before stabilization, opened https://github.com/rust-lang/trait-system-refactor-initiative/issues/230 for that. Also cc https://github.com/rust-lang/trait-system-refactor-initiative/issues/231 for deref and index operations
r? `@BoxyUwU`
|
|
This should fix triagebot publication of the GitHub release on merge.
|
|
`.unwrap_or(vec![])` is as readable as `.unwrap_or_default()`.
Also, this ensures by adding tests that expressions such as
`.unwrap_or(DEFAULT_LITERAL)` (`0`, `""`, etc.) are not replaced by
`.unwrap_or_default()` either.
Related to the discussion in the [Zulip
discussion](https://rust-lang.zulipchat.com/#narrow/channel/257328-clippy/topic/FCP.20concealed_obvious_default)
about PR rust-lang/rust-clippy#15037.
changelog: [`unwrap_or_default`]: do not replace `.unwrap_or(vec![])` by
`.unwrap_or_default()`
|
|
The logic was, as the removed comments suggest, hackish
and meant to implement previous logic that was factored out.
The new logic does exactly what the comments say, and is much
less surprising.
|
|
|
|
|
|
|
|
update enzyme submodule
I upstreamed a few of our rust-lang/Enzyme patches, so I could drop them in our fork.
r? compiler
|
|
`.unwrap_or(vec![])` is as readable as `.unwrap_or_default()`.
|
|
|
|
ping rust-lang/rust-clippy#15690
changelog: none
|
|
|
|
Prevent ABI changes affect EnzymeAD
This PR handles ABI changes for autodiff input arguments to improve Enzyme compatibility. Fundamentally this adjusts activities when a function argument is lowered as an `ScalarPair`, so there's no mismatch between diff activities and args. Also removes activities corresponding to ZSTs.
fixes: https://github.com/rust-lang/rust/issues/144025
r? `@ZuseZ4`
|
|
The feature freeze period is over.
changelog: none
|
|
This fixes an issue where clippy suggests passing a function that takes
no arguments as the first argument of `Result::map_or_else`. The
function needs to take one argument. Example that triggers the issue:
[Playground
link](https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=0b6f9bc7b6ab4dcd26745065544e0b8a)
Fixes #10335.
changelog: [`option_if_let_else`]: fix incorrect suggestion when the
contents of an `Err` variant are ignored
|
|
Rollup of 5 pull requests
Successful merges:
- rust-lang/rust#146566 (Lint more overlapping assignments in MIR.)
- rust-lang/rust#146645 (Cleanup `FnDecl::inner_full_print`)
- rust-lang/rust#146664 (Clean up `ty::Dynamic`)
- rust-lang/rust#146673 (cg_llvm: Replace some DIBuilder wrappers with LLVM-C API bindings (part 4))
- rust-lang/rust#146694 (Remove ImplSubject)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
|
|
Remove ImplSubject
It only has one usage in rustdoc.
|