Action.cpp revision 30660a898545416f0fea2d717f16f75640001e38
13fdcc6fb12d7cf38d2a3111736f80f0dd55447b4Nick Lewycky//===--- 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" 11548f6c8e8010b181cb151df92f0a989363cb993eDavid Blaikie#include "llvm/Support/ErrorHandling.h" 122fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar 132fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar#include <cassert> 142fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbarusing namespace clang::driver; 152fe63e6adac0b9e5f52bcc3100b545e379417e6eDaniel Dunbar 1621549237f14505cfc2a18a06416372a36229d0ceDaniel DunbarAction::~Action() { 1732c1a2ae8b31f32e478c8e504ed81db8c8d25713Daniel Dunbar if (OwnsInputs) { 1832c1a2ae8b31f32e478c8e504ed81db8c8d25713Daniel Dunbar for (iterator it = begin(), ie = end(); it != ie; ++it) 1932c1a2ae8b31f32e478c8e504ed81db8c8d25713Daniel Dunbar delete *it; 2032c1a2ae8b31f32e478c8e504ed81db8c8d25713Daniel Dunbar } 2121549237f14505cfc2a18a06416372a36229d0ceDaniel Dunbar} 2285da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar 2385da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbarconst char *Action::getClassName(ActionClass AC) { 2485da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar switch (AC) { 2585da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar case InputClass: return "input"; 2685da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar case BindArchClass: return "bind-arch"; 27209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar case PreprocessJobClass: return "preprocessor"; 28209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar case PrecompileJobClass: return "precompiler"; 29209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar case AnalyzeJobClass: return "analyzer"; 3030660a898545416f0fea2d717f16f75640001e38Ted Kremenek case MigrateJobClass: return "migrator"; 31209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar case CompileJobClass: return "compiler"; 32209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar case AssembleJobClass: return "assembler"; 33209333506a935c582a7d62ad470978baec71afdcDaniel Dunbar case LinkJobClass: return "linker"; 3485da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar case LipoJobClass: return "lipo"; 356e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar case DsymutilJobClass: return "dsymutil"; 36f857186fd1995b34185d063a29b11ad4f948519fEric Christopher case VerifyJobClass: return "verify"; 3785da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar } 381eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump 39b219cfc4d75f0a03630b7c4509ef791b7e97b2c8David Blaikie llvm_unreachable("invalid class"); 4085da0071a4ab7d6f06831d20bad79122d7407df7Daniel Dunbar} 41f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar 4299ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikievoid InputAction::anchor() {} 4399ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie 441eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpInputAction::InputAction(const Arg &_Input, types::ID _Type) 45f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar : Action(InputClass, _Type), Input(_Input) { 46f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar} 47f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar 4899ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikievoid BindArchAction::anchor() {} 4999ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie 501eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpBindArchAction::BindArchAction(Action *Input, const char *_ArchName) 51f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar : Action(BindArchClass, Input, Input->getType()), ArchName(_ArchName) { 52f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar} 53f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar 5499ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikievoid JobAction::anchor() {} 5599ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie 56f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarJobAction::JobAction(ActionClass Kind, Action *Input, types::ID Type) 57f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar : Action(Kind, Input, Type) { 58f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar} 59f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar 601eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpJobAction::JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type) 61f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar : Action(Kind, Inputs, Type) { 62f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar} 63f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar 6499ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikievoid PreprocessJobAction::anchor() {} 6599ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie 66f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarPreprocessJobAction::PreprocessJobAction(Action *Input, types::ID OutputType) 67f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar : JobAction(PreprocessJobClass, Input, OutputType) { 68f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar} 69f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar 7099ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikievoid PrecompileJobAction::anchor() {} 7199ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie 72f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarPrecompileJobAction::PrecompileJobAction(Action *Input, types::ID OutputType) 73f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar : JobAction(PrecompileJobClass, Input, OutputType) { 74f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar} 75f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar 7699ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikievoid AnalyzeJobAction::anchor() {} 7799ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie 78f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarAnalyzeJobAction::AnalyzeJobAction(Action *Input, types::ID OutputType) 79f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar : JobAction(AnalyzeJobClass, Input, OutputType) { 80f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar} 81f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar 8230660a898545416f0fea2d717f16f75640001e38Ted Kremenekvoid MigrateJobAction::anchor() {} 8330660a898545416f0fea2d717f16f75640001e38Ted Kremenek 8430660a898545416f0fea2d717f16f75640001e38Ted KremenekMigrateJobAction::MigrateJobAction(Action *Input, types::ID OutputType) 8530660a898545416f0fea2d717f16f75640001e38Ted Kremenek : JobAction(MigrateJobClass, Input, OutputType) { 8630660a898545416f0fea2d717f16f75640001e38Ted Kremenek} 8730660a898545416f0fea2d717f16f75640001e38Ted Kremenek 8899ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikievoid CompileJobAction::anchor() {} 8999ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie 90f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarCompileJobAction::CompileJobAction(Action *Input, types::ID OutputType) 91f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar : JobAction(CompileJobClass, Input, OutputType) { 92f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar} 93f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar 9499ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikievoid AssembleJobAction::anchor() {} 9599ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie 96f40ed17472a39097cc5039ed437445289487c9bfDaniel DunbarAssembleJobAction::AssembleJobAction(Action *Input, types::ID OutputType) 97f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar : JobAction(AssembleJobClass, Input, OutputType) { 98f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar} 99f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar 10099ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikievoid LinkJobAction::anchor() {} 10199ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie 1021eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpLinkJobAction::LinkJobAction(ActionList &Inputs, types::ID Type) 103f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar : JobAction(LinkJobClass, Inputs, Type) { 104f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar} 105f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar 10699ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikievoid LipoJobAction::anchor() {} 10799ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie 1081eb4433ac451dc16f4133a88af2d002ac26c58efMike StumpLipoJobAction::LipoJobAction(ActionList &Inputs, types::ID Type) 109f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar : JobAction(LipoJobClass, Inputs, Type) { 110f40ed17472a39097cc5039ed437445289487c9bfDaniel Dunbar} 1116e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar 11299ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikievoid DsymutilJobAction::anchor() {} 11399ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie 1146e0f25483b1a801cd1155ea89c2b725feab16332Daniel DunbarDsymutilJobAction::DsymutilJobAction(ActionList &Inputs, types::ID Type) 1156e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar : JobAction(DsymutilJobClass, Inputs, Type) { 1166e0f25483b1a801cd1155ea89c2b725feab16332Daniel Dunbar} 117f857186fd1995b34185d063a29b11ad4f948519fEric Christopher 11899ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikievoid VerifyJobAction::anchor() {} 11999ba9e3bd70671f3441fb974895f226a83ce0e66David Blaikie 120f857186fd1995b34185d063a29b11ad4f948519fEric ChristopherVerifyJobAction::VerifyJobAction(ActionList &Inputs, types::ID Type) 121f857186fd1995b34185d063a29b11ad4f948519fEric Christopher : JobAction(VerifyJobClass, Inputs, Type) { 122f857186fd1995b34185d063a29b11ad4f948519fEric Christopher} 123