[Bug target/84035] New: [nvptx] Review jumps that are not JUMP_INSN
vries at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Jan 25 09:31:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84035
Bug ID: 84035
Summary: [nvptx] Review jumps that are not JUMP_INSN
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: vries at gcc dot gnu.org
Target Milestone: ---
https://gcc.gnu.org/ml/gcc-patches/2018-01/msg02028.html :
...
> What are the nvptx conditional jumps
> that aren't JUMP_INSN and why? That looks like a bad idea.
OpenACC has different execution modes:
- gang redundant vs gang partitioned
- worker single vs worker partitioned
- vector single vs vector partitioned
The transitions between the different modes are represented by:
- nvptx_fork
- nvptx_forked
- nvptx_join
- nvptx_joined
until pass_machine_reorg.
In pass_machine_reorg, they are expanded into more detailed operations
implementing state propagation and neutering code for single mode.
The neutering code consists of branch-around code, which uses these conditional
jumps that are not JUMP_INSN.
My assumption is that this is done in order to make the compiler behave
conservatively with these jumps. I'm not sure if this is related to one or more
passes after reorg, or if this is just defensive programming.
I could try to change these into JUMP_INSN in stage1, and see how that goes.
...
More information about the Gcc-bugs
mailing list