Action.cpp revision 263508
1169240Sjfv//===--- Action.cpp - Abstract compilation steps --------------------------===// 2169240Sjfv// 3169240Sjfv// The LLVM Compiler Infrastructure 4169240Sjfv// 5169240Sjfv// This file is distributed under the University of Illinois Open Source 6169240Sjfv// License. See LICENSE.TXT for details. 7169240Sjfv// 8169240Sjfv//===----------------------------------------------------------------------===// 9169240Sjfv 10169240Sjfv#include "clang/Driver/Action.h" 11169240Sjfv#include "llvm/Support/ErrorHandling.h" 12169240Sjfv#include <cassert> 13169240Sjfvusing namespace clang::driver; 14169240Sjfvusing namespace llvm::opt; 15169240Sjfv 16169240SjfvAction::~Action() { 17169240Sjfv if (OwnsInputs) { 18169240Sjfv for (iterator it = begin(), ie = end(); it != ie; ++it) 19169240Sjfv delete *it; 20169240Sjfv } 21169240Sjfv} 22169240Sjfv 23169240Sjfvconst char *Action::getClassName(ActionClass AC) { 24169240Sjfv switch (AC) { 25169240Sjfv case InputClass: return "input"; 26169240Sjfv case BindArchClass: return "bind-arch"; 27169240Sjfv case PreprocessJobClass: return "preprocessor"; 28169240Sjfv case PrecompileJobClass: return "precompiler"; 29169240Sjfv case AnalyzeJobClass: return "analyzer"; 30169240Sjfv case MigrateJobClass: return "migrator"; 31169240Sjfv case CompileJobClass: return "compiler"; 32169240Sjfv case AssembleJobClass: return "assembler"; 33173788Sjfv case LinkJobClass: return "linker"; 34169240Sjfv case LipoJobClass: return "lipo"; 35169240Sjfv case DsymutilJobClass: return "dsymutil"; 36169589Sjfv case VerifyJobClass: return "verify"; 37169240Sjfv } 38169240Sjfv 39169240Sjfv llvm_unreachable("invalid class"); 40169240Sjfv} 41169240Sjfv 42169240Sjfvvoid InputAction::anchor() {} 43169240Sjfv 44169240SjfvInputAction::InputAction(const Arg &_Input, types::ID _Type) 45169240Sjfv : Action(InputClass, _Type), Input(_Input) { 46169240Sjfv} 47169240Sjfv 48169240Sjfvvoid BindArchAction::anchor() {} 49169240Sjfv 50169240SjfvBindArchAction::BindArchAction(Action *Input, const char *_ArchName) 51169240Sjfv : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) { 52169240Sjfv} 53169240Sjfv 54169589Sjfvvoid JobAction::anchor() {} 55169240Sjfv 56169240SjfvJobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type) 57169240Sjfv : Action(Kind, Input, Type) { 58169240Sjfv} 59173788Sjfv 60169240SjfvJobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type) 61169240Sjfv : Action(Kind, Inputs, Type) { 62169240Sjfv} 63173788Sjfv 64169240Sjfvvoid PreprocessJobAction::anchor() {} 65169240Sjfv 66169240SjfvPreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType) 67169240Sjfv : JobAction(PreprocessJobClass, Input, OutputType) { 68169240Sjfv} 69169240Sjfv 70169240Sjfvvoid PrecompileJobAction::anchor() {} 71169240Sjfv 72169240SjfvPrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType) 73169240Sjfv : JobAction(PrecompileJobClass, Input, OutputType) { 74169240Sjfv} 75169240Sjfv 76169240Sjfvvoid AnalyzeJobAction::anchor() {} 77169240Sjfv 78169240SjfvAnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType) 79169240Sjfv : JobAction(AnalyzeJobClass, Input, OutputType) { 80169589Sjfv} 81169240Sjfv 82169240Sjfvvoid MigrateJobAction::anchor() {} 83169240Sjfv 84169240SjfvMigrateJobAction::MigrateJobAction(Action *Input, types::ID OutputType) 85173788Sjfv : JobAction(MigrateJobClass, Input, OutputType) { 86169240Sjfv} 87169240Sjfv 88169240Sjfvvoid CompileJobAction::anchor() {} 89173788Sjfv 90169240SjfvCompileJobAction::CompileJobAction(Action *Input, types::ID OutputType) 91169240Sjfv : JobAction(CompileJobClass, Input, OutputType) { 92169240Sjfv} 93169240Sjfv 94169240Sjfvvoid AssembleJobAction::anchor() {} 95169240Sjfv 96169240SjfvAssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType) 97169240Sjfv : JobAction(AssembleJobClass, Input, OutputType) { 98169240Sjfv} 99169240Sjfv 100169240Sjfvvoid LinkJobAction::anchor() {} 101169240Sjfv 102169240SjfvLinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type) 103169240Sjfv : JobAction(LinkJobClass, Inputs, Type) { 104169240Sjfv} 105169240Sjfv 106169589Sjfvvoid LipoJobAction::anchor() {} 107169240Sjfv 108169240SjfvLipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type) 109169240Sjfv : JobAction(LipoJobClass, Inputs, Type) { 110169240Sjfv} 111173788Sjfv 112169240Sjfvvoid DsymutilJobAction::anchor() {} 113169240Sjfv 114169240SjfvDsymutilJobAction::DsymutilJobAction(ActionList &Inputs, types::ID Type) 115173788Sjfv : JobAction(DsymutilJobClass, Inputs, Type) { 116169240Sjfv} 117169240Sjfv 118169240Sjfvvoid VerifyJobAction::anchor() {} 119169240Sjfv 120169240SjfvVerifyJobAction::VerifyJobAction(ActionList &Inputs, types::ID Type) 121169240Sjfv : JobAction(VerifyJobClass, Inputs, Type) { 122169240Sjfv} 123169240Sjfv