-
Notifications
You must be signed in to change notification settings - Fork 6.2k
8371297: C2: assert triggered in BoolTest::BoolTest #28141
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
Conversation
|
👋 Welcome back mli! A progress list of the required criteria for merging this PR into |
|
@Hamlin-Li This change now passes all automated pre-integration checks. ℹ️ This project also has non-automated pre-integration requirements. Please see the file CONTRIBUTING.md for details. After integration, the commit message for the final commit will be: You can use pull request commands such as /summary, /contributor and /issue to adjust it as needed. At the time when this comment was updated there had been 101 new commits pushed to the
As there are no conflicts, your changes will automatically be rebased on top of these commits when integrating. If you prefer to avoid this automatic rebasing, please check the documentation for the /integrate command for further details. ➡️ To integrate this PR with the above commit message to the |
|
@Hamlin-Li The following label will be automatically applied to this pull request:
When this pull request is ready to be reviewed, an "RFR" email will be sent to the corresponding mailing list. If you would like to change these labels, use the /label pull request command. |
| BoolTest::mask m = BoolTest::mask(_test._mask & ~BoolTest::unsigned_compare); | ||
| const BoolTest bt(m); | ||
| tty->print(" test=%s", m == _test._mask ? "" : "unsigned "); | ||
| bt.dump_on(tty); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was wondering why we pass the raw mask around instead of keeping it encapsulated in a BoolTest object. Elsewhere I saw code like this:
cond->get_con() & (BoolTest::unsigned_compare - 1)
which seems to be making fragile assumptions about BoolTest internals.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@dean-long Yes, I have the same feeling that BoolTest is currently used in a fragile way. The reasons could be, BoolTest itself is by design a struct and expose all its status, and unsigned_compare is indeed not formally supported but needed somewhere e.g. in vector intrinsic, and auto-vectorization (after #28047).
I think it's worth to do more investigation about the refactoring of BoolTest. Besides of several places using unsigned_compare, there are more places using signed BoolTest, it might be helpful to do it in another specific pr, so file https://bugs.openjdk.org/browse/JDK-8371396 to track it, feel free to take it if you already have a solution or idea.
This issue (in fact it's #27942) blocks several other prs in my backlog for a while, e.g. #25336, #25341. It helps to resolve this assert in a quick (although ugly) way. Please kindly let me know how you think about it. Thanks!
dean-long
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, I'm fine with cleaning this up as a separate issue.
|
/reviewers 2 |
|
@dean-long |
@dean-long Thank you for reviewing! |
|
@luhenry Thank you for reviewing! |
|
@eme64 Can you have a look? Thanks! :) |
eme64
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks hacky but reasonable for now. Though maybe it would be nicer if we had some printing method that works directly on the mask? Or some other way of passing around the mask.
|
@Hamlin-Li You have a PR title mismatch. And you should always give a quick description about what went wrong in your PR description ;) |
Yes, you're right. I created https://bugs.openjdk.org/browse/JDK-8371396 to track it. |
Thank you for reminding and reviewing! I'll pay attention later. :) |
|
/integrate |
|
Going to push as commit 405d5f7.
Your commit was automatically rebased without conflicts. |
|
@Hamlin-Li Pushed as commit 405d5f7. 💡 You may see a message that your pull request was closed with unmerged commits. This can be safely ignored. |
Hi,
Can you help to review this patch?
Not sure how this one slipped in (#28047), I think it passed my local test and github CI test at that time.
Please check https://bugs.openjdk.org/browse/JDK-8371297 for details.
Thanks!
Progress
Issue
Reviewers
Reviewing
Using
gitCheckout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/28141/head:pull/28141$ git checkout pull/28141Update a local copy of the PR:
$ git checkout pull/28141$ git pull https://git.openjdk.org/jdk.git pull/28141/headUsing Skara CLI tools
Checkout this PR locally:
$ git pr checkout 28141View PR using the GUI difftool:
$ git pr show -t 28141Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/28141.diff
Using Webrev
Link to Webrev Comment