Action.cpp revision 193326
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 12#include <cassert> 13using namespace clang::driver; 14 15Action::~Action() { 16 // FIXME: Free the inputs. The problem is that BindArchAction shares 17 // inputs; so we can't just walk the inputs. 18} 19 20const char *Action::getClassName(ActionClass AC) { 21 switch (AC) { 22 case InputClass: return "input"; 23 case BindArchClass: return "bind-arch"; 24 case PreprocessJobClass: return "preprocessor"; 25 case PrecompileJobClass: return "precompiler"; 26 case AnalyzeJobClass: return "analyzer"; 27 case CompileJobClass: return "compiler"; 28 case AssembleJobClass: return "assembler"; 29 case LinkJobClass: return "linker"; 30 case LipoJobClass: return "lipo"; 31 } 32 33 assert(0 && "invalid class"); 34 return 0; 35} 36 37InputAction::InputAction(const Arg &_Input, types::ID _Type) 38 : Action(InputClass, _Type), Input(_Input) { 39} 40 41BindArchAction::BindArchAction(Action *Input, const char *_ArchName) 42 : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) { 43} 44 45JobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type) 46 : Action(Kind, Input, Type) { 47} 48 49JobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type) 50 : Action(Kind, Inputs, Type) { 51} 52 53PreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType) 54 : JobAction(PreprocessJobClass, Input, OutputType) { 55} 56 57PrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType) 58 : JobAction(PrecompileJobClass, Input, OutputType) { 59} 60 61AnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType) 62 : JobAction(AnalyzeJobClass, Input, OutputType) { 63} 64 65CompileJobAction::CompileJobAction(Action *Input, types::ID OutputType) 66 : JobAction(CompileJobClass, Input, OutputType) { 67} 68 69AssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType) 70 : JobAction(AssembleJobClass, Input, OutputType) { 71} 72 73LinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type) 74 : JobAction(LinkJobClass, Inputs, Type) { 75} 76 77LipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type) 78 : JobAction(LipoJobClass, Inputs, Type) { 79} 80