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; 14193326Sed 15193326SedAction::~Action() { 16205219Srdivacky if (OwnsInputs) { 17205219Srdivacky for (iterator it = begin(), ie = end(); it != ie; ++it) 18205219Srdivacky delete *it; 19205219Srdivacky } 20193326Sed} 21193326Sed 22193326Sedconst char *Action::getClassName(ActionClass AC) { 23193326Sed switch (AC) { 24193326Sed case InputClass: return "input"; 25193326Sed case BindArchClass: return "bind-arch"; 26193326Sed case PreprocessJobClass: return "preprocessor"; 27193326Sed case PrecompileJobClass: return "precompiler"; 28193326Sed case AnalyzeJobClass: return "analyzer"; 29234353Sdim case MigrateJobClass: return "migrator"; 30193326Sed case CompileJobClass: return "compiler"; 31193326Sed case AssembleJobClass: return "assembler"; 32193326Sed case LinkJobClass: return "linker"; 33193326Sed case LipoJobClass: return "lipo"; 34210299Sed case DsymutilJobClass: return "dsymutil"; 35226633Sdim case VerifyJobClass: return "verify"; 36193326Sed } 37198092Srdivacky 38226633Sdim llvm_unreachable("invalid class"); 39193326Sed} 40193326Sed 41234353Sdimvoid InputAction::anchor() {} 42234353Sdim 43198092SrdivackyInputAction::InputAction(const Arg &_Input, types::ID _Type) 44193326Sed : Action(InputClass, _Type), Input(_Input) { 45193326Sed} 46193326Sed 47234353Sdimvoid BindArchAction::anchor() {} 48234353Sdim 49198092SrdivackyBindArchAction::BindArchAction(Action *Input, const char *_ArchName) 50193326Sed : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) { 51193326Sed} 52193326Sed 53234353Sdimvoid JobAction::anchor() {} 54234353Sdim 55193326SedJobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type) 56193326Sed : Action(Kind, Input, Type) { 57193326Sed} 58193326Sed 59198092SrdivackyJobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type) 60193326Sed : Action(Kind, Inputs, Type) { 61193326Sed} 62193326Sed 63234353Sdimvoid PreprocessJobAction::anchor() {} 64234353Sdim 65193326SedPreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType) 66193326Sed : JobAction(PreprocessJobClass, Input, OutputType) { 67193326Sed} 68193326Sed 69234353Sdimvoid PrecompileJobAction::anchor() {} 70234353Sdim 71193326SedPrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType) 72193326Sed : JobAction(PrecompileJobClass, Input, OutputType) { 73193326Sed} 74193326Sed 75234353Sdimvoid AnalyzeJobAction::anchor() {} 76234353Sdim 77193326SedAnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType) 78193326Sed : JobAction(AnalyzeJobClass, Input, OutputType) { 79193326Sed} 80193326Sed 81234353Sdimvoid MigrateJobAction::anchor() {} 82234353Sdim 83234353SdimMigrateJobAction::MigrateJobAction(Action *Input, types::ID OutputType) 84234353Sdim : JobAction(MigrateJobClass, Input, OutputType) { 85234353Sdim} 86234353Sdim 87234353Sdimvoid CompileJobAction::anchor() {} 88234353Sdim 89193326SedCompileJobAction::CompileJobAction(Action *Input, types::ID OutputType) 90193326Sed : JobAction(CompileJobClass, Input, OutputType) { 91193326Sed} 92193326Sed 93234353Sdimvoid AssembleJobAction::anchor() {} 94234353Sdim 95193326SedAssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType) 96193326Sed : JobAction(AssembleJobClass, Input, OutputType) { 97193326Sed} 98193326Sed 99234353Sdimvoid LinkJobAction::anchor() {} 100234353Sdim 101198092SrdivackyLinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type) 102193326Sed : JobAction(LinkJobClass, Inputs, Type) { 103193326Sed} 104193326Sed 105234353Sdimvoid LipoJobAction::anchor() {} 106234353Sdim 107198092SrdivackyLipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type) 108193326Sed : JobAction(LipoJobClass, Inputs, Type) { 109193326Sed} 110210299Sed 111234353Sdimvoid DsymutilJobAction::anchor() {} 112234353Sdim 113210299SedDsymutilJobAction::DsymutilJobAction(ActionList &Inputs, types::ID Type) 114210299Sed : JobAction(DsymutilJobClass, Inputs, Type) { 115210299Sed} 116226633Sdim 117234353Sdimvoid VerifyJobAction::anchor() {} 118234353Sdim 119226633SdimVerifyJobAction::VerifyJobAction(ActionList &Inputs, types::ID Type) 120226633Sdim : JobAction(VerifyJobClass, Inputs, Type) { 121226633Sdim} 122