Skip to content

Add missing visit_base call to bounds fuzzer#9064

Merged
alexreinking merged 1 commit intomainfrom
abadams/fix_9055
Mar 19, 2026
Merged

Add missing visit_base call to bounds fuzzer#9064
alexreinking merged 1 commit intomainfrom
abadams/fix_9055

Conversation

@abadams
Copy link
Member

@abadams abadams commented Mar 19, 2026

Also added a minimizer pass.

Fixes #9055

Also added a minimizer pass.

Fixes #9055
abadams added a commit that referenced this pull request Mar 19, 2026
After #9064 I had Claude audit the codebase looking for places where it
looked like a recursive call to the base class visitor/mutator was
missing. If found a few.

There was a very subtle one in SplitTuples.cpp (accompanied by a new
test) in a visitor which tries to determine which tuple components
potentially depend on the old value of another component, but it wasn't
recursing into Call args, so tuple components could hide
cross-dependencies inside the args of a self-dependency.

Region costs isn't recursing into Shuffle nodes, but really it shouldn't
see them at all, because this is before vectorization.

A Store visitor in handling of atomic vectorization isn't considering
predicates, seemingly for no reason. I changed it to just use the base
class visit method.

Finally, an example custom lowering pass should recursively visit
children because it is attempting to ensure something was absent in the
IR.
Copy link
Contributor

@mcourteaux mcourteaux left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Took me a while to understand the minimization algorithm, but now I do! Learned something. 😄

@mcourteaux
Copy link
Contributor

I quickly want to point out that all the failures in #9055 seemed to have only been produced on ARM workflows. Never have I seen this fail on the x86 workflows, so maybe there is also a CodeGen_ARM issue or an LLVM issue?

@alexreinking alexreinking merged commit d9733d1 into main Mar 19, 2026
23 checks passed
@alexreinking alexreinking deleted the abadams/fix_9055 branch March 19, 2026 23:22
mcourteaux pushed a commit that referenced this pull request Mar 21, 2026
* Add missing recursive mutations/visits

After #9064 I had Claude audit the codebase looking for places where it
looked like a recursive call to the base class visitor/mutator was
missing. If found a few.

There was a very subtle one in SplitTuples.cpp (accompanied by a new
test) in a visitor which tries to determine which tuple components
potentially depend on the old value of another component, but it wasn't
recursing into Call args, so tuple components could hide
cross-dependencies inside the args of a self-dependency.

Region costs isn't recursing into Shuffle nodes, but really it shouldn't
see them at all, because this is before vectorization.

A Store visitor in handling of atomic vectorization isn't considering
predicates, seemingly for no reason. I changed it to just use the base
class visit method.

Finally, an example custom lowering pass should recursively visit
children because it is attempting to ensure something was absent in the
IR.

* Actual error message

---------

Co-authored-by: Alex Reinking <areinking@adobe.com>
@abadams
Copy link
Member Author

abadams commented Mar 21, 2026

They all repro'd fine on x86 for me. The failures don't go anywhere near the backends.

bool found_failure = false;
if (minimize_failures) {
std::cerr << "Attempting to minimize failure...\n";
mutate_with(test, [&](auto *self, const Expr &e) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can't this be a visitor?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fuzz issues.

3 participants