Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

@command_line annotation #5123

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Conversation

ChrisDodd
Copy link
Contributor

  • per-target selectable support, though most should want it

@fruffy fruffy added the core Topics concerning the core segments of the compiler (frontend, midend, parser) label Feb 14, 2025
@fruffy
Copy link
Collaborator

fruffy commented Feb 16, 2025

Would be great to show the utility with one of the existing parametrized tests.

https://github.com/p4lang/p4c/blob/main/backends/p4test/CMakeLists.txt#L118

I also think it makes sense to add target and arch as arguments to the annotation to make sure that only the right compiler picks up the option. This might make this parser safer.

@ChrisDodd
Copy link
Contributor Author

Would be great to show the utility with one of the existing parametrized tests.
https://github.com/p4lang/p4c/blob/main/backends/p4test/CMakeLists.txt#L118

I added a @command_line to these tests (and checked that the result matches), and removed the now redundant runs from CMakeLists.txt

I also think it makes sense to add target and arch as arguments to the annotation to make sure that only the right compiler picks up the option. This might make this parser safer.

I would think it would be common to want arguments for multiple targets when you have a program that will actually compile on multiple targets. On can use #ifdef TARGET_FOO around things that you only want on a specific target, though that gets messy quickly. There's nothing terribly unsafe about these annotation, as currently they will flag an error for unrecognized command line options for the current target.

@ChrisDodd ChrisDodd force-pushed the cdodd-testing branch 2 times, most recently from 0deb9d7 to 28b0e73 Compare February 18, 2025 11:17
@fruffy fruffy requested review from kfcripps and vlstill February 18, 2025 15:52
Copy link
Contributor

@kfcripps kfcripps left a comment

Choose a reason for hiding this comment

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

I doubt that AMD's backend would want this (I think @asl mentioned reasons that it might not be a good idea (although I don't personally have any opinion about whether it's a good or bad idea)), but as long as it's easy for a backend to toggle this annotation to off (as you've done in this PR), then I'm not opposed to these changes.

This reminds me of issue #4907. When I created it, I was thinking of having a way to specify compilation options in the source file some other way, for example via the LLVM Lit (https://llvm.org/docs/CommandGuide/lit.html) utility.

@sepanchi Sergey, have you had a chance to give any thought to this?

Maybe adding this annotation will avoid the need to use something like Lit.

Comment on lines +34 to +36
state start {
transition s1;
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Why does start get moved here in this test?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is something the ParsersUroll pass does . I checked these outputs against the deleted ones in parser-unroll (which was the outputs for the tests with the explicit --loopsUnroll argument in ctest) and they match.

Copy link
Contributor

Choose a reason for hiding this comment

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

Are the midend outputs changing now because:

  • Previously, these outputs were the result of running the corresponding tests without --loopsUnroll. The outputs in p4_16_samples_outputs/parser-unroll/ were the result of running the same set of tests with --loopsUnroll.
  • Now, we are only running each of these tests one time - only with --loopsUnroll. So the set of outputs corresponding to no --loopsUnroll were deleted and replaced by outputs of the same set of tests corresponding to having --loopsUnroll.

Is that correct?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, exactly.

- per-target selectable support, though most should want it

Signed-off-by: Chris Dodd <cdodd@nvidia.com>
- remove duplicate runs now unneeded

Signed-off-by: Chris Dodd <cdodd@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
core Topics concerning the core segments of the compiler (frontend, midend, parser)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants