1218893Sdim//===--- 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" 11226633Sdim#include "llvm/Support/ErrorHandling.h" 12193326Sed#include <cassert> 13193326Sedusing namespace clang::driver; 14263508Sdimusing namespace llvm::opt; 15193326Sed 16193326SedAction::~Action() { 17205219Srdivacky if (OwnsInputs) { 18205219Srdivacky for (iterator it = begin(), ie = end(); it != ie; ++it) 19205219Srdivacky delete *it; 20205219Srdivacky } 21193326Sed} 22193326Sed 23193326Sedconst char *Action::getClassName(ActionClass AC) { 24193326Sed switch (AC) { 25193326Sed case InputClass: return "input"; 26193326Sed case BindArchClass: return "bind-arch"; 27193326Sed case PreprocessJobClass: return "preprocessor"; 28193326Sed case PrecompileJobClass: return "precompiler"; 29193326Sed case AnalyzeJobClass: return "analyzer"; 30234353Sdim case MigrateJobClass: return "migrator"; 31193326Sed case CompileJobClass: return "compiler"; 32193326Sed case AssembleJobClass: return "assembler"; 33193326Sed case LinkJobClass: return "linker"; 34193326Sed case LipoJobClass: return "lipo"; 35210299Sed case DsymutilJobClass: return "dsymutil"; 36226633Sdim case VerifyJobClass: return "verify"; 37193326Sed } 38198092Srdivacky 39226633Sdim llvm_unreachable("invalid class"); 40193326Sed} 41193326Sed 42234353Sdimvoid InputAction::anchor() {} 43234353Sdim 44198092SrdivackyInputAction::InputAction(const Arg &_Input, types::ID _Type) 45193326Sed : Action(InputClass, _Type), Input(_Input) { 46193326Sed} 47193326Sed 48234353Sdimvoid BindArchAction::anchor() {} 49234353Sdim 50198092SrdivackyBindArchAction::BindArchAction(Action *Input, const char *_ArchName) 51193326Sed : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) { 52193326Sed} 53193326Sed 54234353Sdimvoid JobAction::anchor() {} 55234353Sdim 56193326SedJobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type) 57193326Sed : Action(Kind, Input, Type) { 58193326Sed} 59193326Sed 60198092SrdivackyJobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type) 61193326Sed : Action(Kind, Inputs, Type) { 62193326Sed} 63193326Sed 64234353Sdimvoid PreprocessJobAction::anchor() {} 65234353Sdim 66193326SedPreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType) 67193326Sed : JobAction(PreprocessJobClass, Input, OutputType) { 68193326Sed} 69193326Sed 70234353Sdimvoid PrecompileJobAction::anchor() {} 71234353Sdim 72193326SedPrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType) 73193326Sed : JobAction(PrecompileJobClass, Input, OutputType) { 74193326Sed} 75193326Sed 76234353Sdimvoid AnalyzeJobAction::anchor() {} 77234353Sdim 78193326SedAnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType) 79193326Sed : JobAction(AnalyzeJobClass, Input, OutputType) { 80193326Sed} 81193326Sed 82234353Sdimvoid MigrateJobAction::anchor() {} 83234353Sdim 84234353SdimMigrateJobAction::MigrateJobAction(Action *Input, types::ID OutputType) 85234353Sdim : JobAction(MigrateJobClass, Input, OutputType) { 86234353Sdim} 87234353Sdim 88234353Sdimvoid CompileJobAction::anchor() {} 89234353Sdim 90193326SedCompileJobAction::CompileJobAction(Action *Input, types::ID OutputType) 91193326Sed : JobAction(CompileJobClass, Input, OutputType) { 92193326Sed} 93193326Sed 94234353Sdimvoid AssembleJobAction::anchor() {} 95234353Sdim 96193326SedAssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType) 97193326Sed : JobAction(AssembleJobClass, Input, OutputType) { 98193326Sed} 99193326Sed 100234353Sdimvoid LinkJobAction::anchor() {} 101234353Sdim 102198092SrdivackyLinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type) 103193326Sed : JobAction(LinkJobClass, Inputs, Type) { 104193326Sed} 105193326Sed 106234353Sdimvoid LipoJobAction::anchor() {} 107234353Sdim 108198092SrdivackyLipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type) 109193326Sed : JobAction(LipoJobClass, Inputs, Type) { 110193326Sed} 111210299Sed 112234353Sdimvoid DsymutilJobAction::anchor() {} 113234353Sdim 114210299SedDsymutilJobAction::DsymutilJobAction(ActionList &Inputs, types::ID Type) 115210299Sed : JobAction(DsymutilJobClass, Inputs, Type) { 116210299Sed} 117226633Sdim 118234353Sdimvoid VerifyJobAction::anchor() {} 119234353Sdim 120226633SdimVerifyJobAction::VerifyJobAction(ActionList &Inputs, types::ID Type) 121226633Sdim : JobAction(VerifyJobClass, Inputs, Type) { 122226633Sdim} 123