mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
bc3d8a44a7
A series of patches beginning with https://reviews.llvm.org/D71898 propose to add an implementation of the coroutine passes to the new pass manager. As part of these changes, the coroutine passes that implement the legacy pass manager interface are renamed, to `<PassName>Legacy`. This mirrors similar changes that have been made to many other passes in LLVM as they've been transitioned to support both old and new pass managers. This commit splits out the renaming portion of that patch and commits it in advance as an NFC (no functional change intended) commit. It renames: * `CoroEarly` => `CoroEarlyLegacy` * `CoroSplit` => `CoroSplitLegacy` * `CoroElide` => `CoroElideLegacy` * `CoroCleanup` => `CoroCleanupLegacy`
38 lines
1.2 KiB
C++
38 lines
1.2 KiB
C++
//===-- Coroutines.h - Coroutine Transformations ----------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
// Declare accessor functions for coroutine lowering passes.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_TRANSFORMS_COROUTINES_H
|
|
#define LLVM_TRANSFORMS_COROUTINES_H
|
|
|
|
namespace llvm {
|
|
|
|
class Pass;
|
|
class PassManagerBuilder;
|
|
|
|
/// Add all coroutine passes to appropriate extension points.
|
|
void addCoroutinePassesToExtensionPoints(PassManagerBuilder &Builder);
|
|
|
|
/// Lower coroutine intrinsics that are not needed by later passes.
|
|
Pass *createCoroEarlyLegacyPass();
|
|
|
|
/// Split up coroutines into multiple functions driving their state machines.
|
|
Pass *createCoroSplitLegacyPass();
|
|
|
|
/// Analyze coroutines use sites, devirtualize resume/destroy calls and elide
|
|
/// heap allocation for coroutine frame where possible.
|
|
Pass *createCoroElideLegacyPass();
|
|
|
|
/// Lower all remaining coroutine intrinsics.
|
|
Pass *createCoroCleanupLegacyPass();
|
|
|
|
}
|
|
|
|
#endif
|