[all-commits] [llvm/llvm-project] c75ced: [Coroutines] Set presplit attribute in Clang and mlir

Chuanqi Xu via All-commits all-commits at lists.llvm.org
Tue Jan 4 18:26:00 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c75cedc237f9747c5d5fe2a312d5ccc8531e2e70
      https://github.com/llvm/llvm-project/commit/c75cedc237f9747c5d5fe2a312d5ccc8531e2e70
  Author: Chuanqi Xu <yedeng.yd at linux.alibaba.com>
  Date:   2022-01-05 (Wed, 05 Jan 2022)

  Changed paths:
    M clang/lib/CodeGen/CGCoroutine.cpp
    M clang/test/CodeGenCoroutines/coro-always-inline.cpp
    A clang/test/CodeGenCoroutines/coro-attributes.cpp
    M llvm/docs/Coroutines.rst
    M llvm/lib/Transforms/Coroutines/CoroEarly.cpp
    M llvm/lib/Transforms/Coroutines/CoroInternal.h
    M llvm/test/Transforms/Coroutines/coro-async.ll
    M llvm/test/Transforms/Coroutines/coro-debug-O2.ll
    M llvm/test/Transforms/Coroutines/coro-debug-coro-frame.ll
    M llvm/test/Transforms/Coroutines/coro-debug-dbg.values-not_used_in_frame.ll
    M llvm/test/Transforms/Coroutines/coro-debug-dbg.values.ll
    M llvm/test/Transforms/Coroutines/coro-debug-frame-variable.ll
    M llvm/test/Transforms/Coroutines/coro-noalias-param.ll
    M llvm/test/Transforms/Coroutines/coro-split-01.ll
    M llvm/test/Transforms/Coroutines/coro-split-recursive.ll
    M llvm/test/Transforms/Coroutines/ex0.ll
    M llvm/test/Transforms/Coroutines/ex1.ll
    M llvm/test/Transforms/Coroutines/ex2.ll
    M llvm/test/Transforms/Coroutines/ex3.ll
    M llvm/test/Transforms/Coroutines/ex4.ll
    M llvm/test/Transforms/Coroutines/ex5.ll
    M llvm/test/Transforms/Coroutines/phi-coro-end.ll
    M llvm/test/Transforms/Coroutines/restart-trigger.ll
    M mlir/lib/Dialect/Async/Transforms/AsyncToAsyncRuntime.cpp
    A mlir/test/mlir-opt/async.mlir

  Log Message:
  -----------
  [Coroutines] Set presplit attribute in Clang and mlir

This fixes bug49264.

Simply, coroutine shouldn't be inlined before CoroSplit. And the marker
for pre-splited coroutine is created in CoroEarly pass, which ran after
AlwaysInliner Pass in O0 pipeline. So that the AlwaysInliner couldn't
detect it shouldn't inline a coroutine. So here is the error.

This patch set the presplit attribute in clang and mlir. So the inliner
would always detect the attribute before splitting.

Reviewed By: rjmccall, ezhulenev

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




More information about the All-commits mailing list