Action.cpp revision 0c3f599bcaf79302caae6183464c9fe4532cbcd2
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
152fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel DunbarAction::~Action() {}
1685da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar
1785da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbarconst char *Action::getClassName(ActionClass AC) {
1885da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  switch (AC) {
1985da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  case InputClass: return "input";
2085da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  case BindArchClass: return "bind-arch";
21209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar  case PreprocessJobClass: return "preprocessor";
22209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar  case PrecompileJobClass: return "precompiler";
23209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar  case AnalyzeJobClass: return "analyzer";
24209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar  case CompileJobClass: return "compiler";
25209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar  case AssembleJobClass: return "assembler";
26209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar  case LinkJobClass: return "linker";
2785da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  case LipoJobClass: return "lipo";
2885da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  }
2985da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar
3085da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  assert(0 && "invalid class");
3185da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar  return 0;
3285da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar}
33f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
34f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarInputAction::InputAction(const Arg &_Input, types::ID _Type)
35f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : Action(InputClass, _Type), Input(_Input) {
36f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
37f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
38f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarBindArchAction::BindArchAction(Action *Input, const char *_ArchName)
39f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) {
40f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
41f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
42f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarJobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type)
43f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : Action(Kind, Input, Type) {
44f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
45f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
46f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarJobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type)
47f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : Action(Kind, Inputs, Type) {
48f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
49f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
50f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarPreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType)
51f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(PreprocessJobClass, Input, OutputType) {
52f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
53f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
54f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarPrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType)
55f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(PrecompileJobClass, Input, OutputType) {
56f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
57f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
58f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarAnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType)
59f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(AnalyzeJobClass, Input, OutputType) {
60f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
61f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
62f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarCompileJobAction::CompileJobAction(Action *Input, types::ID OutputType)
63f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(CompileJobClass, Input, OutputType) {
64f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
65f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
66f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarAssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType)
67f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(AssembleJobClass, Input, OutputType) {
68f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
69f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
70f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarLinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type)
71f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(LinkJobClass, Inputs, Type) {
72f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
73f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar
740c3f599bcaf79302caae6183464c9fe4532cbcd2Daniel DunbarLipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type)
75f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar  : JobAction(LipoJobClass, Inputs, Type) {
76f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar}
77