1//===--- Action.cpp - Abstract compilation steps --------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "clang/Driver/Action.h" 11#include "llvm/Support/ErrorHandling.h" 12 13#include <cassert> 14using namespace clang::driver; 15 16Action::~Action() { 17 if (OwnsInputs) { 18 for (iterator it = begin(), ie = end(); it != ie; ++it) 19 delete *it; 20 } 21} 22 23const char *Action::getClassName(ActionClass AC) { 24 switch (AC) { 25 case InputClass: return "input"; 26 case BindArchClass: return "bind-arch"; 27 case PreprocessJobClass: return "preprocessor"; 28 case PrecompileJobClass: return "precompiler"; 29 case AnalyzeJobClass: return "analyzer"; 30 case MigrateJobClass: return "migrator"; 31 case CompileJobClass: return "compiler"; 32 case AssembleJobClass: return "assembler"; 33 case LinkJobClass: return "linker"; 34 case LipoJobClass: return "lipo"; 35 case DsymutilJobClass: return "dsymutil"; 36 case VerifyJobClass: return "verify"; 37 } 38 39 llvm_unreachable("invalid class"); 40} 41 42void InputAction::anchor() {} 43 44InputAction::InputAction(const Arg &_Input, types::ID _Type) 45 : Action(InputClass, _Type), Input(_Input) { 46} 47 48void BindArchAction::anchor() {} 49 50BindArchAction::BindArchAction(Action *Input, const char *_ArchName) 51 : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) { 52} 53 54void JobAction::anchor() {} 55 56JobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type) 57 : Action(Kind, Input, Type) { 58} 59 60JobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type) 61 : Action(Kind, Inputs, Type) { 62} 63 64void PreprocessJobAction::anchor() {} 65 66PreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType) 67 : JobAction(PreprocessJobClass, Input, OutputType) { 68} 69 70void PrecompileJobAction::anchor() {} 71 72PrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType) 73 : JobAction(PrecompileJobClass, Input, OutputType) { 74} 75 76void AnalyzeJobAction::anchor() {} 77 78AnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType) 79 : JobAction(AnalyzeJobClass, Input, OutputType) { 80} 81 82void MigrateJobAction::anchor() {} 83 84MigrateJobAction::MigrateJobAction(Action *Input, types::ID OutputType) 85 : JobAction(MigrateJobClass, Input, OutputType) { 86} 87 88void CompileJobAction::anchor() {} 89 90CompileJobAction::CompileJobAction(Action *Input, types::ID OutputType) 91 : JobAction(CompileJobClass, Input, OutputType) { 92} 93 94void AssembleJobAction::anchor() {} 95 96AssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType) 97 : JobAction(AssembleJobClass, Input, OutputType) { 98} 99 100void LinkJobAction::anchor() {} 101 102LinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type) 103 : JobAction(LinkJobClass, Inputs, Type) { 104} 105 106void LipoJobAction::anchor() {} 107 108LipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type) 109 : JobAction(LipoJobClass, Inputs, Type) { 110} 111 112void DsymutilJobAction::anchor() {} 113 114DsymutilJobAction::DsymutilJobAction(ActionList &Inputs, types::ID Type) 115 : JobAction(DsymutilJobClass, Inputs, Type) { 116} 117 118void VerifyJobAction::anchor() {} 119 120VerifyJobAction::VerifyJobAction(ActionList &Inputs, types::ID Type) 121 : JobAction(VerifyJobClass, Inputs, Type) { 122} 123