[LLVMdev] loop pragmas

Sebastian Pop spop at codeaurora.org
Tue Nov 27 09:57:19 PST 2012


Krzysztof Parzyszek wrote:
> On 11/27/2012 8:03 AM, Hal Finkel wrote:
> >
> >This still leaves the question of exactly how to attach metadata to loops, etc.
> 
> In one implementation, the loops had a fixed structure: guard
> branch, preheader, header and loop body, optional epilog.  The
> structure was clearly identified by various means (flags, bits,
> etc.).  No optimization in the optimizer (roughly a counterpart of
> the LLVM's bitcode optimizer) was allowed to alter it.  For example,
> CFG simplification could change branches all it wanted, *except* the
> branches that were a part of the loop structure.  A "continue"
> inside of a loop would not create a nested loop, etc.  This worked
> like a dream (hence my limited appreciation for SimplifyCFG...).
> 
> In that implementation, the metadata was placed in the loop header,
> or the loop preheader, depending on what information it was.  Since
> any code that would try to move things around in a loop would have
> to know what it's doing (i.e. would have to be aware of the loop
> structure and what the rules were), there was no risk that the
> metadata would become accidentally separated from the loop.
> 
> I'd love to see something like that in LLVM, help make it happen,

+1

Sebastian
-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation



More information about the llvm-dev mailing list