This is an archive of the discontinued LLVM Phabricator instance.

Handle llvm.loop metadata in SplitCriticalEdges.
AbandonedPublic

Authored by jdoerfert on Sep 13 2014, 11:24 AM.

Details

Reviewers
grosser
Summary

Loop ID metadata (llvm.loop) might get falsified if we split critical
backedges. This patch ensures that only a valid annotation survives
and is attached to the correct branch instruction which can be the old
or the new one.

Four of the five test cases check for all different situations which
can arise when we split an edge annotated with llvm.loop metadata and
when LoopInfo is present. The fifth checks that we remove such metadata
in case LoopInfo is not present as everything else might invalidate the
annotation.

Diff Detail

Event Timeline

jdoerfert updated this revision to Diff 13678.Sep 13 2014, 11:24 AM
jdoerfert retitled this revision from to Move llvm.loop metadata in SplitCriticalEdge.
jdoerfert updated this object.
jdoerfert edited the test plan for this revision. (Show Details)
jdoerfert added a subscriber: Unknown Object (MLST).
jdoerfert updated this revision to Diff 13723.Sep 15 2014, 11:10 AM

Added test cases and implemented all possible cases an edge with annotations could be splitted.

jdoerfert retitled this revision from Move llvm.loop metadata in SplitCriticalEdge to Handle llvm.loop metadata in SplitCriticalEdges. .Sep 15 2014, 11:22 AM
jdoerfert updated this object.
grosser edited edge metadata.Jan 22 2015, 2:46 AM

Is this patch still relevant? I remember there was a discussion with Hal and Andrew on llvm-commits. What was the result?

I am just going through my open patches. I already asked earlier. Johannes, is this patch still relevant?

jdoerfert abandoned this revision.Sep 27 2015, 6:00 PM

Seems not relevant to ppl.