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

Merged
merged 2 commits into from
Feb 26, 2025
Merged

@command_line annotation #5123

merged 2 commits into from
Feb 26, 2025

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.

@kfcripps kfcripps requested review from asl and removed request for asl February 22, 2025 01:40
Copy link
Contributor

@asl asl left a comment

Choose a reason for hiding this comment

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

I'm still not being a big fan of mixing two orthogonal things – command line options of a particular implementation and overall semantics of enable/disable several things.

But given that it is an opt-in feature in the annotation parser, I guess it should be ok.

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

Signed-off-by: Chris Dodd <[email protected]>
- remove duplicate runs now unneeded

Signed-off-by: Chris Dodd <[email protected]>
@ChrisDodd ChrisDodd added this pull request to the merge queue Feb 26, 2025
Merged via the queue into p4lang:main with commit 3ffac66 Feb 26, 2025
20 checks passed
@ChrisDodd ChrisDodd deleted the cdodd-testing branch February 26, 2025 01:16
Vineet1101 pushed a commit to Vineet1101/p4c that referenced this pull request Mar 15, 2025
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.

6 participants