[LLVMdev] [RFC] Progress towards OpenMP support

Sanjoy Das sanjoy at playingwithpointers.com
Thu Sep 13 13:39:17 PDT 2012


Hi Hal,

> An alternative approach, which you seem to be proposing, is that the
> parallelization reads the metadata up front (and then drops it all). If
> a pass does not preserve that analysis, then it will be invalidated, and
> the parallelization will be lost. This, indeed, might be a better
> approach, but would at least require touching a lot more code (if
> nothing else, we'd need to audit and then add the analysis preservation
> calls to a lot of otherwise-unrelated code).

I don't drop any metadata.  Let me put it this way: say we have a pass
MakeConsistent which drops inconsistent MD nodes. We will also need
some code in LLVM that parses the IR and converts it to a from that is
more easily processed.  My proposal is to squash these two pieces of
code (MakeConsistent and the "parser") into a single one.  The
resulting code then doesn't need to mutate the metadata at all since
it consumes the modified, normalized metadata as soon as it is
"produced".  It could also make the MD consistent if it wanted to, but
that would be redundant, since it is the only piece of code that
directly reads the MD.

https://github.com/sanjoy/llvm/blob/parallel-md/lib/Analysis/ParallelizationMetadata.cpp
is basically an implementation of this "squashed" pass. It provides an
interface to the MD and this interface normalizes the MD before
exposing it.

Thanks!
-- 
Sanjoy Das
http://playingwithpointers.com



More information about the llvm-dev mailing list