Action.cpp revision 21549237f14505cfc2a18a06416372a36229d0ce
12fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar//===--- Action.cpp - Abstract compilation steps ------------------------*-===//
22fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar//
32fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar//                     The LLVM Compiler Infrastructure
42fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar//
52fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar// This file is distributed under the University of Illinois Open Source
62fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar// License. See LICENSE.TXT for details.
72fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar//
82fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar//===----------------------------------------------------------------------===//
92fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar
102fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar#include "clang/Driver/Action.h"
112fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar
122fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar#include <cassert>
132fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbarusing namespace clang::driver;
142fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar
1521549237f14505cfc2a18a06416372a36229d0ceDaniel DunbarAction::~Action() {
1621549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar  // Free the inputs.
1721549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar  for (iterator it = begin(), ie = end(); it != ie; ++it)
1821549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar    delete *it;
1921549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar}
2085da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar
2185da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbarconst char *Action::getClassName(ActionClass AC) {
2285da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  switch (AC) {
2385da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  case InputClass: return "input";
2485da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  case BindArchClass: return "bind-arch";
25209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar  case PreprocessJobClass: return "preprocessor";
26209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar  case PrecompileJobClass: return "precompiler";
27209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar  case AnalyzeJobClass: return "analyzer";
28209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar  case CompileJobClass: return "compiler";
29209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar  case AssembleJobClass: return "assembler";
30209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar  case LinkJobClass: return "linker";
3185da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  case LipoJobClass: return "lipo";
3285da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  }
3385da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar
3485da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  assert(0 && "invalid class");
3585da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  return 0;
3685da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar}
37f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
38f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarInputAction::InputAction(const Arg &_Input, types::ID _Type)
39f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : Action(InputClass, _Type), Input(_Input) {
40f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
41f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
42f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarBindArchAction::BindArchAction(Action *Input, const char *_ArchName)
43f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) {
44f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
45f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
46f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarJobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type)
47f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : Action(Kind, Input, Type) {
48f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
49f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
50f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarJobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type)
51f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : Action(Kind, Inputs, Type) {
52f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
53f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
54f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarPreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType)
55f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(PreprocessJobClass, Input, OutputType) {
56f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
57f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
58f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarPrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType)
59f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(PrecompileJobClass, Input, OutputType) {
60f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
61f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
62f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarAnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType)
63f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(AnalyzeJobClass, Input, OutputType) {
64f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
65f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
66f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarCompileJobAction::CompileJobAction(Action *Input, types::ID OutputType)
67f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(CompileJobClass, Input, OutputType) {
68f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
69f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
70f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarAssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType)
71f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(AssembleJobClass, Input, OutputType) {
72f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
73f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
74f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarLinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type)
75f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(LinkJobClass, Inputs, Type) {
76f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
77f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
780c3f599bcaf79302caae6183464c9fe4532cbcd2Daniel DunbarLipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type)
79f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(LipoJobClass, Inputs, Type) {
80f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
81