[LLVMdev] [cfe-dev] [RFC] Parallelization metadata and intrinsics in LLVM (for OpenMP, etc.)
dag at cray.com
dag at cray.com
Tue Oct 2 12:39:33 PDT 2012
Hal Finkel <hfinkel at anl.gov> writes:
> As I've stated, whether the metadata is preserved is not really the
> relevant metric. It is fine for a pass that does not understand
> parallelization metadata to drop it. The important part is that dropping
> the metadata, and moving instructions to which that metadata is
> attached, must not cause miscompiles. For example:
> - Instructions with unknown side effects or dependencies must not be
> moved from outside a parallel region to inside a parallel region.
> - Serialized subregions inside of parallel regions cannot be deleted
> without deleting the enclosing parallel region.
> The outstanding proposals have ways of dealing with these things. In
> the case of my proposal, it is though cross-referencing the metadata
> sufficiently and using function boundaries to prevent unwanted code
> motion. In Intel's case, it is by using the barriers implied by the
> intrinsics calls.
These two paragraphs seem contradictory to me. How can a pass rely on
the metadata to not do illegal code motion if the pass has dropped the
metadata? I must be missing something important.
The only way I can think that this would work is that the explicit
outlining is already done so there is no way to move between
parallel/non-parallel without going all interprocedurally bonkers. :)
This is the kind of thing that worries me about these proposals.
More information about the llvm-dev