[all-commits] [llvm/llvm-project] fbec8f: [SimplifyCFG] Do not hoist/sink convergent functio...

Yaxun (Sam) Liu via All-commits all-commits at lists.llvm.org
Tue Feb 28 09:42:33 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: fbec8f04ab39211f01366d8d255e942d7b76354b
      https://github.com/llvm/llvm-project/commit/fbec8f04ab39211f01366d8d255e942d7b76354b
  Author: Yaxun (Sam) Liu <yaxun.liu at amd.com>
  Date:   2023-02-28 (Tue, 28 Feb 2023)

  Changed paths:
    M llvm/lib/Transforms/Utils/SimplifyCFG.cpp
    M llvm/test/Transforms/SimplifyCFG/convergent.ll

  Log Message:
  -----------
  [SimplifyCFG] Do not hoist/sink convergent function calls

Currently SimplifyCFG hoists/sink common instructions in then/else basic blocks
when certain options are enabled, which is the case for default clang optimization
pipelines for -O3. It tries to hoist/sink convergent function calls in divergent
control flow, which causes incorrect ISA generated for GPU, e.g.
https://github.com/ROCm-Developer-Tools/HIP/issues/3172

This patch fixes that by conservatively disable hoisting/sinking common
convergent function calls in then/else blocks.

Reviewed by: Artem Belevich

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




More information about the All-commits mailing list