[all-commits] [llvm/llvm-project] c3f12d: [docs] Revise loop terminology reference.

Michael Kruse via All-commits all-commits at lists.llvm.org
Mon Oct 5 08:28:26 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: c3f12dd6069ebfc913953a4a29e9db5dd4749160
      https://github.com/llvm/llvm-project/commit/c3f12dd6069ebfc913953a4a29e9db5dd4749160
  Author: Michael Kruse <llvm-project at meinersbur.de>
  Date:   2020-10-05 (Mon, 05 Oct 2020)

  Changed paths:
    M llvm/docs/LangRef.rst
    M llvm/docs/LoopTerminology.rst
    A llvm/docs/loop-guard.svg
    A llvm/docs/loop-irreducible.svg
    A llvm/docs/loop-merge.svg
    A llvm/docs/loop-nested.svg
    A llvm/docs/loop-nonmaximal.svg
    A llvm/docs/loop-separate.svg
    A llvm/docs/loop-single.svg
    A llvm/docs/loop-terminology.svg

  Log Message:
  -----------
  [docs] Revise loop terminology reference.

Motivated by D88183, this seeks to clarify the current loop nomenclature with added illustrations, examples for possibly unexpected situations (infinite loops not part of the "parent" loop, logical loops sharing the same header, ...), and clarification on what other sources may consider a loop. The current document also has multiple errors that are fixed here.

Some selected errors:
 * Loops a defined as strongly-connected components. A component a partition of all nodes, i.e. a subloop can never be a component. That is, the document as it currently is only covers top-level loops, even it also uses the term SCC for subloops.
 * "a block can be the header of two separate loops at the same time" (it is considered a single loop by LoopInfo)
 * "execute before some interesting event happens" (some interesting event is not well-defined)

Reviewed By: baziotis, Whitney

Differential Revision: https://reviews.llvm.org/D88408




More information about the All-commits mailing list