Action.cpp revision 198092
1193326Sed//===--- Action.cpp - Abstract compilation steps ------------------------*-===// 2193326Sed// 3193326Sed// The LLVM Compiler Infrastructure 4193326Sed// 5193326Sed// This file is distributed under the University of Illinois Open Source 6193326Sed// License. See LICENSE.TXT for details. 7193326Sed// 8193326Sed//===----------------------------------------------------------------------===// 9193326Sed 10193326Sed#include "clang/Driver/Action.h" 11193326Sed 12193326Sed#include <cassert> 13193326Sedusing namespace clang::driver; 14193326Sed 15193326SedAction::~Action() { 16193326Sed // FIXME: Free the inputs. The problem is that BindArchAction shares 17193326Sed // inputs; so we can't just walk the inputs. 18193326Sed} 19193326Sed 20193326Sedconst char *Action::getClassName(ActionClass AC) { 21193326Sed switch (AC) { 22193326Sed case InputClass: return "input"; 23193326Sed case BindArchClass: return "bind-arch"; 24193326Sed case PreprocessJobClass: return "preprocessor"; 25193326Sed case PrecompileJobClass: return "precompiler"; 26193326Sed case AnalyzeJobClass: return "analyzer"; 27193326Sed case CompileJobClass: return "compiler"; 28193326Sed case AssembleJobClass: return "assembler"; 29193326Sed case LinkJobClass: return "linker"; 30193326Sed case LipoJobClass: return "lipo"; 31193326Sed } 32198092Srdivacky 33193326Sed assert(0 && "invalid class"); 34193326Sed return 0; 35193326Sed} 36193326Sed 37198092SrdivackyInputAction::InputAction(const Arg &_Input, types::ID _Type) 38193326Sed : Action(InputClass, _Type), Input(_Input) { 39193326Sed} 40193326Sed 41198092SrdivackyBindArchAction::BindArchAction(Action *Input, const char *_ArchName) 42193326Sed : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) { 43193326Sed} 44193326Sed 45193326SedJobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type) 46193326Sed : Action(Kind, Input, Type) { 47193326Sed} 48193326Sed 49198092SrdivackyJobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type) 50193326Sed : Action(Kind, Inputs, Type) { 51193326Sed} 52193326Sed 53193326SedPreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType) 54193326Sed : JobAction(PreprocessJobClass, Input, OutputType) { 55193326Sed} 56193326Sed 57193326SedPrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType) 58193326Sed : JobAction(PrecompileJobClass, Input, OutputType) { 59193326Sed} 60193326Sed 61193326SedAnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType) 62193326Sed : JobAction(AnalyzeJobClass, Input, OutputType) { 63193326Sed} 64193326Sed 65193326SedCompileJobAction::CompileJobAction(Action *Input, types::ID OutputType) 66193326Sed : JobAction(CompileJobClass, Input, OutputType) { 67193326Sed} 68193326Sed 69193326SedAssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType) 70193326Sed : JobAction(AssembleJobClass, Input, OutputType) { 71193326Sed} 72193326Sed 73198092SrdivackyLinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type) 74193326Sed : JobAction(LinkJobClass, Inputs, Type) { 75193326Sed} 76193326Sed 77198092SrdivackyLipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type) 78193326Sed : JobAction(LipoJobClass, Inputs, Type) { 79193326Sed} 80