Changeset View
Changeset View
Standalone View
Standalone View
include/llvm/Transforms/Coroutines.h
- This file was added.
//===-- Coroutines.h - Coroutine Transformations ----------------*- C++ -*-===// | |||||
// | |||||
// The LLVM Compiler Infrastructure | |||||
// | |||||
// This file is distributed under the University of Illinois Open Source | |||||
// License. See LICENSE.TXT for details. | |||||
// | |||||
//===----------------------------------------------------------------------===// | |||||
// 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 *createCoroEarlyPass(); | |||||
/// Split up coroutines into multiple functions driving their state machines. | |||||
Pass *createCoroSplitPass(); | |||||
/// Analyze coroutines use sites, devirtualize resume/destroy calls and elide | |||||
/// heap allocation for coroutine frame where possible. | |||||
Pass *createCoroElidePass(); | |||||
/// Lower all remaining coroutine intrinsics. | |||||
Pass *createCoroCleanupPass(); | |||||
} | |||||
#endif |