Action.cpp revision 263508
194742Sobrien//===--- Action.cpp - Abstract compilation steps --------------------------===//
294742Sobrien//
3146890Speter//                     The LLVM Compiler Infrastructure
4146890Speter//
5179626Speter// This file is distributed under the University of Illinois Open Source
6240316Seadler// License. See LICENSE.TXT for details.
7146890Speter//
8146890Speter//===----------------------------------------------------------------------===//
9146890Speter
10146890Speter#include "clang/Driver/Action.h"
11146890Speter#include "llvm/Support/ErrorHandling.h"
12146890Speter#include <cassert>
13146890Speterusing namespace clang::driver;
14146890Speterusing namespace llvm::opt;
15146890Speter
16146890SpeterAction::~Action() {
17146890Speter  if (OwnsInputs) {
18146890Speter    for (iterator it = begin(), ie = end(); it != ie; ++it)
19146890Speter      delete *it;
20146890Speter  }
2194742Sobrien}
2295253Sru
23159014Sjmgconst char *Action::getClassName(ActionClass AC) {
2496991Srwatson  switch (AC) {
2596991Srwatson  case InputClass: return "input";
2696991Srwatson  case BindArchClass: return "bind-arch";
27102773Srwatson  case PreprocessJobClass: return "preprocessor";
28102773Srwatson  case PrecompileJobClass: return "precompiler";
29156279Srwatson  case AnalyzeJobClass: return "analyzer";
30156279Srwatson  case MigrateJobClass: return "migrator";
3194917Simp  case CompileJobClass: return "compiler";
32126445Sobrien  case AssembleJobClass: return "assembler";
3394917Simp  case LinkJobClass: return "linker";
34146933Simp  case LipoJobClass: return "lipo";
3594847Sjhb  case DsymutilJobClass: return "dsymutil";
3694847Sjhb  case VerifyJobClass: return "verify";
3794847Sjhb  }
3894915Sken
3999607Smjacob  llvm_unreachable("invalid class");
4094915Sken}
4194915Sken
4294915Skenvoid InputAction::anchor() {}
4394915Sken
4494915SkenInputAction::InputAction(const Arg &_Input, types::ID _Type)
4594915Sken  : Action(InputClass, _Type), Input(_Input) {
4694915Sken}
4794915Sken
48169922Sjfvvoid BindArchAction::anchor() {}
49219647Sdavidch
5097611SbillfBindArchAction::BindArchAction(Action *Input, const char *_ArchName)
5194918Sgshapiro  : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) {
5294918Sgshapiro}
5394918Sgshapiro
5494918Sgshapirovoid JobAction::anchor() {}
5594918Sgshapiro
56106187SdesJobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type)
57106187Sdes  : Action(Kind, Input, Type) {
5895455Sdes}
5998750Sdes
60205686SdesJobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type)
61205686Sdes  : Action(Kind, Inputs, Type) {
62205686Sdes}
6396268Sgad
6496268Sgadvoid PreprocessJobAction::anchor() {}
65116233Sgad
6696332SpeterPreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType)
6796332Speter  : JobAction(PreprocessJobClass, Input, OutputType) {
6896332Speter}
69100314Sru
70146921Sruvoid PrecompileJobAction::anchor() {}
71146921Sru
7297611SbillfPrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType)
73190171Srnoland  : JobAction(PrecompileJobClass, Input, OutputType) {
74115825Sfanf}
75126445Sobrien
76117645Sdwmalonevoid AnalyzeJobAction::anchor() {}
77118204Sbp
78118204SbpAnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType)
79127337Smlaier  : JobAction(AnalyzeJobClass, Input, OutputType) {
80126445Sobrien}
81146837Sobrien
82146837Sobrienvoid MigrateJobAction::anchor() {}
83146837Sobrien
84146837SobrienMigrateJobAction::MigrateJobAction(Action *Input, types::ID OutputType)
85133182Spjd  : JobAction(MigrateJobClass, Input, OutputType) {
86148779Spjd}
87133182Spjd
88133182Spjdvoid CompileJobAction::anchor() {}
89133182Spjd
90133182SpjdCompileJobAction::CompileJobAction(Action *Input, types::ID OutputType)
91133841Spjd  : JobAction(CompileJobClass, Input, OutputType) {
92143521Spjd}
93133182Spjd
94148779Spjdvoid AssembleJobAction::anchor() {}
95133182Spjd
96168419SpjdAssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType)
97132311Salfred  : JobAction(AssembleJobClass, Input, OutputType) {
98132311Salfred}
99132311Salfred
100132268Salfredvoid LinkJobAction::anchor() {}
101195405Sflz
102146960SimpLinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type)
103148772Scperciva  : JobAction(LinkJobClass, Inputs, Type) {
104148871Scperciva}
105161748Scperciva
106221900Scpercivavoid LipoJobAction::anchor() {}
107149464Semax
108149464SemaxLipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type)
109149464Semax  : JobAction(LipoJobClass, Inputs, Type) {
110149464Semax}
111149464Semax
112151618Scerivoid DsymutilJobAction::anchor() {}
113200194Scperciva
114200194ScpercivaDsymutilJobAction::DsymutilJobAction(ActionList &Inputs, types::ID Type)
115204061Sedwin  : JobAction(DsymutilJobClass, Inputs, Type) {
116204061Sedwin}
117204061Sedwin
118204061Sedwinvoid VerifyJobAction::anchor() {}
119204061Sedwin
120204061SedwinVerifyJobAction::VerifyJobAction(ActionList &Inputs, types::ID Type)
121206455Sbms  : JobAction(VerifyJobClass, Inputs, Type) {
122230843Sjimharris}
123241828Seadler