mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-27 23:51:56 +00:00
Re-instate r125819 and r125820 with no functionality change
llvm-svn: 126060
This commit is contained in:
parent
29eb47bd68
commit
8f5cf74c77
@ -1,34 +1,11 @@
|
||||
set(MODULE TRUE)
|
||||
|
||||
set( LLVM_USED_LIBS
|
||||
clangFrontendTool
|
||||
clangFrontend
|
||||
clangDriver
|
||||
clangSerialization
|
||||
clangCodeGen
|
||||
clangParse
|
||||
clangSema
|
||||
clangStaticAnalyzerFrontend
|
||||
clangStaticAnalyzerCheckers
|
||||
clangStaticAnalyzerCore
|
||||
clangAnalysis
|
||||
clangIndex
|
||||
clangRewrite
|
||||
clangAST
|
||||
clangLex
|
||||
clangBasic
|
||||
)
|
||||
|
||||
# Why do we have to link to all this just to print out function names?
|
||||
set( LLVM_LINK_COMPONENTS
|
||||
${LLVM_TARGETS_TO_BUILD}
|
||||
asmparser
|
||||
bitreader
|
||||
bitwriter
|
||||
codegen
|
||||
ipo
|
||||
selectiondag
|
||||
)
|
||||
set( LLVM_LINK_COMPONENTS support mc)
|
||||
|
||||
add_clang_library(PrintFunctionNames PrintFunctionNames.cpp)
|
||||
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include "clang/Frontend/FrontendDiagnostic.h"
|
||||
#include "clang/Frontend/TextDiagnosticPrinter.h"
|
||||
|
||||
#include "llvm/LLVMContext.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Config/config.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
@ -130,7 +129,6 @@ int main(int argc, const char **argv, char * const *envp) {
|
||||
|
||||
// Create a compiler instance to handle the actual work.
|
||||
CompilerInstance Clang;
|
||||
Clang.setLLVMContext(new llvm::LLVMContext);
|
||||
Clang.setInvocation(CI.take());
|
||||
|
||||
// Create the compilers actual diagnostics engine.
|
||||
|
@ -26,8 +26,6 @@
|
||||
namespace llvm {
|
||||
struct fltSemantics;
|
||||
class StringRef;
|
||||
class LLVMContext;
|
||||
class Type;
|
||||
}
|
||||
|
||||
namespace clang {
|
||||
@ -532,12 +530,6 @@ public:
|
||||
virtual const char *getStaticInitSectionSpecifier() const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual const llvm::Type* adjustInlineAsmType(std::string& Constraint,
|
||||
const llvm::Type* Ty,
|
||||
llvm::LLVMContext& Context) const {
|
||||
return Ty;
|
||||
}
|
||||
protected:
|
||||
virtual uint64_t getPointerWidthV(unsigned AddrSpace) const {
|
||||
return PointerWidth;
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
|
||||
namespace llvm {
|
||||
class LLVMContext;
|
||||
class Module;
|
||||
}
|
||||
|
||||
@ -24,9 +25,14 @@ class CodeGenAction : public ASTFrontendAction {
|
||||
private:
|
||||
unsigned Act;
|
||||
llvm::OwningPtr<llvm::Module> TheModule;
|
||||
llvm::LLVMContext *VMContext;
|
||||
bool OwnsVMContext;
|
||||
|
||||
protected:
|
||||
CodeGenAction(unsigned _Act);
|
||||
/// Create a new code generation action. If the optional \arg _VMContext
|
||||
/// parameter is supplied, the action uses it without taking ownership,
|
||||
/// otherwise it creates a fresh LLVM context and takes ownership.
|
||||
CodeGenAction(unsigned _Act, llvm::LLVMContext *_VMContext = 0);
|
||||
|
||||
virtual bool hasIRSupport() const;
|
||||
|
||||
@ -44,37 +50,40 @@ public:
|
||||
/// been run. The result may be null on failure.
|
||||
llvm::Module *takeModule();
|
||||
|
||||
/// Take the LLVM context used by this action.
|
||||
llvm::LLVMContext *takeLLVMContext();
|
||||
|
||||
BackendConsumer *BEConsumer;
|
||||
};
|
||||
|
||||
class EmitAssemblyAction : public CodeGenAction {
|
||||
public:
|
||||
EmitAssemblyAction();
|
||||
EmitAssemblyAction(llvm::LLVMContext *_VMContext = 0);
|
||||
};
|
||||
|
||||
class EmitBCAction : public CodeGenAction {
|
||||
public:
|
||||
EmitBCAction();
|
||||
EmitBCAction(llvm::LLVMContext *_VMContext = 0);
|
||||
};
|
||||
|
||||
class EmitLLVMAction : public CodeGenAction {
|
||||
public:
|
||||
EmitLLVMAction();
|
||||
EmitLLVMAction(llvm::LLVMContext *_VMContext = 0);
|
||||
};
|
||||
|
||||
class EmitLLVMOnlyAction : public CodeGenAction {
|
||||
public:
|
||||
EmitLLVMOnlyAction();
|
||||
EmitLLVMOnlyAction(llvm::LLVMContext *_VMContext = 0);
|
||||
};
|
||||
|
||||
class EmitCodeGenOnlyAction : public CodeGenAction {
|
||||
public:
|
||||
EmitCodeGenOnlyAction();
|
||||
EmitCodeGenOnlyAction(llvm::LLVMContext *_VMContext = 0);
|
||||
};
|
||||
|
||||
class EmitObjAction : public CodeGenAction {
|
||||
public:
|
||||
EmitObjAction();
|
||||
EmitObjAction(llvm::LLVMContext *_VMContext = 0);
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -18,8 +18,6 @@
|
||||
|
||||
namespace llvm {
|
||||
class raw_ostream;
|
||||
class Module;
|
||||
class LLVMContext;
|
||||
namespace sys { class Path; }
|
||||
}
|
||||
namespace clang {
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include <string>
|
||||
|
||||
namespace llvm {
|
||||
class LLVMContext;
|
||||
class raw_ostream;
|
||||
class raw_fd_ostream;
|
||||
class Timer;
|
||||
@ -59,9 +58,6 @@ class TargetInfo;
|
||||
/// come in two forms; a short form that reuses the CompilerInstance objects,
|
||||
/// and a long form that takes explicit instances of any required objects.
|
||||
class CompilerInstance {
|
||||
/// The LLVM context used for this instance.
|
||||
llvm::OwningPtr<llvm::LLVMContext> LLVMContext;
|
||||
|
||||
/// The options used in this compiler instance.
|
||||
llvm::OwningPtr<CompilerInvocation> Invocation;
|
||||
|
||||
@ -154,23 +150,6 @@ public:
|
||||
// of the context or else not CompilerInstance specific.
|
||||
bool ExecuteAction(FrontendAction &Act);
|
||||
|
||||
/// }
|
||||
/// @name LLVM Context
|
||||
/// {
|
||||
|
||||
bool hasLLVMContext() const { return LLVMContext != 0; }
|
||||
|
||||
llvm::LLVMContext &getLLVMContext() const {
|
||||
assert(LLVMContext && "Compiler instance has no LLVM context!");
|
||||
return *LLVMContext;
|
||||
}
|
||||
|
||||
llvm::LLVMContext *takeLLVMContext() { return LLVMContext.take(); }
|
||||
|
||||
/// setLLVMContext - Replace the current LLVM context and take ownership of
|
||||
/// \arg Value.
|
||||
void setLLVMContext(llvm::LLVMContext *Value);
|
||||
|
||||
/// }
|
||||
/// @name Compiler Invocation and Options
|
||||
/// {
|
||||
|
@ -1014,9 +1014,6 @@ public:
|
||||
}
|
||||
virtual bool validateAsmConstraint(const char *&Name,
|
||||
TargetInfo::ConstraintInfo &info) const;
|
||||
virtual const llvm::Type* adjustInlineAsmType(std::string& Constraint,
|
||||
const llvm::Type* Ty,
|
||||
llvm::LLVMContext& Context) const;
|
||||
virtual std::string convertConstraint(const char Constraint) const;
|
||||
virtual const char *getClobbers() const {
|
||||
return "~{dirflag},~{fpsr},~{flags}";
|
||||
@ -1341,15 +1338,6 @@ X86TargetInfo::validateAsmConstraint(const char *&Name,
|
||||
return false;
|
||||
}
|
||||
|
||||
const llvm::Type*
|
||||
X86TargetInfo::adjustInlineAsmType(std::string& Constraint,
|
||||
const llvm::Type* Ty,
|
||||
llvm::LLVMContext &Context) const {
|
||||
if (Constraint=="y" && Ty->isVectorTy())
|
||||
return llvm::Type::getX86_MMXTy(Context);
|
||||
return Ty;
|
||||
}
|
||||
|
||||
|
||||
std::string
|
||||
X86TargetInfo::convertConstraint(const char Constraint) const {
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "CGDebugInfo.h"
|
||||
#include "CodeGenModule.h"
|
||||
#include "CodeGenFunction.h"
|
||||
#include "TargetInfo.h"
|
||||
#include "clang/AST/StmtVisitor.h"
|
||||
#include "clang/Basic/PrettyStackTrace.h"
|
||||
#include "clang/Basic/TargetInfo.h"
|
||||
@ -1135,8 +1136,8 @@ void CodeGenFunction::EmitAsmStmt(const AsmStmt &S) {
|
||||
}
|
||||
}
|
||||
if (const llvm::Type* AdjTy =
|
||||
Target.adjustInlineAsmType(OutputConstraint, ResultRegTypes.back(),
|
||||
getLLVMContext()))
|
||||
getTargetHooks().adjustInlineAsmType(*this, OutputConstraint,
|
||||
ResultRegTypes.back()))
|
||||
ResultRegTypes.back() = AdjTy;
|
||||
} else {
|
||||
ArgTypes.push_back(Dest.getAddress()->getType());
|
||||
@ -1207,8 +1208,8 @@ void CodeGenFunction::EmitAsmStmt(const AsmStmt &S) {
|
||||
}
|
||||
}
|
||||
if (const llvm::Type* AdjTy =
|
||||
Target.adjustInlineAsmType(InputConstraint, Arg->getType(),
|
||||
getLLVMContext()))
|
||||
getTargetHooks().adjustInlineAsmType(*this, InputConstraint,
|
||||
Arg->getType()))
|
||||
Arg = Builder.CreateBitCast(Arg, AdjTy);
|
||||
|
||||
ArgTypes.push_back(Arg->getType());
|
||||
|
@ -224,9 +224,15 @@ void BackendConsumer::InlineAsmDiagHandler2(const llvm::SMDiagnostic &D,
|
||||
|
||||
//
|
||||
|
||||
CodeGenAction::CodeGenAction(unsigned _Act) : Act(_Act) {}
|
||||
CodeGenAction::CodeGenAction(unsigned _Act, LLVMContext *_VMContext)
|
||||
: Act(_Act), VMContext(_VMContext ? _VMContext : new LLVMContext),
|
||||
OwnsVMContext(!_VMContext) {}
|
||||
|
||||
CodeGenAction::~CodeGenAction() {}
|
||||
CodeGenAction::~CodeGenAction() {
|
||||
TheModule.reset();
|
||||
if (OwnsVMContext)
|
||||
delete VMContext;
|
||||
}
|
||||
|
||||
bool CodeGenAction::hasIRSupport() const { return true; }
|
||||
|
||||
@ -243,6 +249,11 @@ llvm::Module *CodeGenAction::takeModule() {
|
||||
return TheModule.take();
|
||||
}
|
||||
|
||||
llvm::LLVMContext *CodeGenAction::takeLLVMContext() {
|
||||
OwnsVMContext = false;
|
||||
return VMContext;
|
||||
}
|
||||
|
||||
static raw_ostream *GetOutputStream(CompilerInstance &CI,
|
||||
llvm::StringRef InFile,
|
||||
BackendAction Action) {
|
||||
@ -275,7 +286,7 @@ ASTConsumer *CodeGenAction::CreateASTConsumer(CompilerInstance &CI,
|
||||
new BackendConsumer(BA, CI.getDiagnostics(),
|
||||
CI.getCodeGenOpts(), CI.getTargetOpts(),
|
||||
CI.getFrontendOpts().ShowTimers, InFile, OS.take(),
|
||||
CI.getLLVMContext());
|
||||
*VMContext);
|
||||
return BEConsumer;
|
||||
}
|
||||
|
||||
@ -301,7 +312,7 @@ void CodeGenAction::ExecuteAction() {
|
||||
getCurrentFile().c_str());
|
||||
|
||||
llvm::SMDiagnostic Err;
|
||||
TheModule.reset(ParseIR(MainFileCopy, Err, CI.getLLVMContext()));
|
||||
TheModule.reset(ParseIR(MainFileCopy, Err, *VMContext));
|
||||
if (!TheModule) {
|
||||
// Translate from the diagnostic info to the SourceManager location.
|
||||
SourceLocation Loc = SM.getLocation(
|
||||
@ -332,15 +343,20 @@ void CodeGenAction::ExecuteAction() {
|
||||
|
||||
//
|
||||
|
||||
EmitAssemblyAction::EmitAssemblyAction()
|
||||
: CodeGenAction(Backend_EmitAssembly) {}
|
||||
EmitAssemblyAction::EmitAssemblyAction(llvm::LLVMContext *_VMContext)
|
||||
: CodeGenAction(Backend_EmitAssembly, _VMContext) {}
|
||||
|
||||
EmitBCAction::EmitBCAction() : CodeGenAction(Backend_EmitBC) {}
|
||||
EmitBCAction::EmitBCAction(llvm::LLVMContext *_VMContext)
|
||||
: CodeGenAction(Backend_EmitBC, _VMContext) {}
|
||||
|
||||
EmitLLVMAction::EmitLLVMAction() : CodeGenAction(Backend_EmitLL) {}
|
||||
EmitLLVMAction::EmitLLVMAction(llvm::LLVMContext *_VMContext)
|
||||
: CodeGenAction(Backend_EmitLL, _VMContext) {}
|
||||
|
||||
EmitLLVMOnlyAction::EmitLLVMOnlyAction() : CodeGenAction(Backend_EmitNothing) {}
|
||||
EmitLLVMOnlyAction::EmitLLVMOnlyAction(llvm::LLVMContext *_VMContext)
|
||||
: CodeGenAction(Backend_EmitNothing, _VMContext) {}
|
||||
|
||||
EmitCodeGenOnlyAction::EmitCodeGenOnlyAction() : CodeGenAction(Backend_EmitMCNull) {}
|
||||
EmitCodeGenOnlyAction::EmitCodeGenOnlyAction(llvm::LLVMContext *_VMContext)
|
||||
: CodeGenAction(Backend_EmitMCNull, _VMContext) {}
|
||||
|
||||
EmitObjAction::EmitObjAction() : CodeGenAction(Backend_EmitObj) {}
|
||||
EmitObjAction::EmitObjAction(llvm::LLVMContext *_VMContext)
|
||||
: CodeGenAction(Backend_EmitObj, _VMContext) {}
|
||||
|
@ -355,6 +355,14 @@ bool UseX86_MMXType(const llvm::Type *IRType) {
|
||||
IRType->getScalarSizeInBits() != 64;
|
||||
}
|
||||
|
||||
static const llvm::Type* X86AdjustInlineAsmType(CodeGen::CodeGenFunction &CGF,
|
||||
llvm::StringRef Constraint,
|
||||
const llvm::Type* Ty) {
|
||||
if (Constraint=="y" && Ty->isVectorTy())
|
||||
return llvm::Type::getX86_MMXTy(CGF.getLLVMContext());
|
||||
return Ty;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// X86-32 ABI Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -415,6 +423,13 @@ public:
|
||||
|
||||
bool initDwarfEHRegSizeTable(CodeGen::CodeGenFunction &CGF,
|
||||
llvm::Value *Address) const;
|
||||
|
||||
const llvm::Type* adjustInlineAsmType(CodeGen::CodeGenFunction &CGF,
|
||||
llvm::StringRef Constraint,
|
||||
const llvm::Type* Ty) const {
|
||||
return X86AdjustInlineAsmType(CGF, Constraint, Ty);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
@ -895,6 +910,13 @@ public:
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
const llvm::Type* adjustInlineAsmType(CodeGen::CodeGenFunction &CGF,
|
||||
llvm::StringRef Constraint,
|
||||
const llvm::Type* Ty) const {
|
||||
return X86AdjustInlineAsmType(CGF, Constraint, Ty);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class WinX86_64TargetCodeGenInfo : public TargetCodeGenInfo {
|
||||
|
@ -15,8 +15,11 @@
|
||||
#ifndef CLANG_CODEGEN_TARGETINFO_H
|
||||
#define CLANG_CODEGEN_TARGETINFO_H
|
||||
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
|
||||
namespace llvm {
|
||||
class GlobalValue;
|
||||
class Type;
|
||||
class Value;
|
||||
}
|
||||
|
||||
@ -102,6 +105,12 @@ namespace clang {
|
||||
llvm::Value *Address) const {
|
||||
return Address;
|
||||
}
|
||||
|
||||
virtual const llvm::Type* adjustInlineAsmType(CodeGen::CodeGenFunction &CGF,
|
||||
llvm::StringRef Constraint,
|
||||
const llvm::Type* Ty) const {
|
||||
return Ty;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,6 @@
|
||||
#include "clang/Frontend/Utils.h"
|
||||
#include "clang/Serialization/ASTReader.h"
|
||||
#include "clang/Sema/CodeCompleteConsumer.h"
|
||||
#include "llvm/LLVMContext.h"
|
||||
#include "llvm/Support/FileSystem.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
@ -47,10 +46,6 @@ CompilerInstance::CompilerInstance()
|
||||
CompilerInstance::~CompilerInstance() {
|
||||
}
|
||||
|
||||
void CompilerInstance::setLLVMContext(llvm::LLVMContext *Value) {
|
||||
LLVMContext.reset(Value);
|
||||
}
|
||||
|
||||
void CompilerInstance::setInvocation(CompilerInvocation *Value) {
|
||||
Invocation.reset(Value);
|
||||
}
|
||||
|
@ -1,9 +1,8 @@
|
||||
set(LLVM_USED_LIBS libclang)
|
||||
|
||||
set( LLVM_LINK_COMPONENTS
|
||||
bitreader
|
||||
support
|
||||
mc
|
||||
core
|
||||
)
|
||||
|
||||
add_clang_executable(c-index-test
|
||||
|
@ -13,7 +13,7 @@ TOOLNAME = c-index-test
|
||||
# No plugins, optimize startup time.
|
||||
TOOL_NO_EXPORTS = 1
|
||||
|
||||
LINK_COMPONENTS := bitreader mc core
|
||||
LINK_COMPONENTS := support mc
|
||||
USEDLIBS = clang.a clangIndex.a clangFrontend.a clangDriver.a \
|
||||
clangSerialization.a clangParse.a clangSema.a clangAnalysis.a \
|
||||
clangAST.a clangLex.a clangBasic.a
|
||||
|
@ -24,7 +24,6 @@
|
||||
#include "clang/Frontend/TextDiagnosticBuffer.h"
|
||||
#include "clang/Frontend/TextDiagnosticPrinter.h"
|
||||
#include "clang/FrontendTool/Utils.h"
|
||||
#include "llvm/LLVMContext.h"
|
||||
#include "llvm/ADT/Statistic.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
#include "llvm/Support/ManagedStatic.h"
|
||||
@ -118,8 +117,6 @@ int cc1_main(const char **ArgBegin, const char **ArgEnd,
|
||||
llvm::OwningPtr<CompilerInstance> Clang(new CompilerInstance());
|
||||
llvm::IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
|
||||
|
||||
Clang->setLLVMContext(new llvm::LLVMContext());
|
||||
|
||||
// Run clang -cc1 test.
|
||||
if (ArgBegin != ArgEnd && llvm::StringRef(ArgBegin[0]) == "-cc1test") {
|
||||
Diagnostic Diags(DiagID, new TextDiagnosticPrinter(llvm::errs(),
|
||||
|
@ -11,9 +11,8 @@ set(LLVM_USED_LIBS
|
||||
clangBasic)
|
||||
|
||||
set( LLVM_LINK_COMPONENTS
|
||||
bitreader
|
||||
support
|
||||
mc
|
||||
core
|
||||
)
|
||||
|
||||
add_clang_library(libclang
|
||||
|
@ -15,7 +15,7 @@ EXPORTED_SYMBOL_FILE = $(PROJ_SRC_DIR)/libclang.exports
|
||||
LINK_LIBS_IN_SHARED = 1
|
||||
SHARED_LIBRARY = 1
|
||||
|
||||
LINK_COMPONENTS := bitreader mc core
|
||||
LINK_COMPONENTS := support mc
|
||||
USEDLIBS = clangFrontend.a clangDriver.a clangSerialization.a clangParse.a \
|
||||
clangSema.a clangAnalysis.a clangAST.a clangLex.a clangBasic.a
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
CLANG_LEVEL = ../..
|
||||
TESTNAME = Basic
|
||||
LINK_COMPONENTS := core support mc
|
||||
LINK_COMPONENTS := support mc
|
||||
USEDLIBS = clangBasic.a
|
||||
|
||||
include $(CLANG_LEVEL)/unittests/Makefile
|
||||
|
@ -14,7 +14,6 @@
|
||||
#include "clang/Frontend/FrontendAction.h"
|
||||
|
||||
#include "llvm/ADT/Triple.h"
|
||||
#include "llvm/LLVMContext.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
@ -61,7 +60,6 @@ TEST(ASTFrontendAction, Sanity) {
|
||||
invocation->getFrontendOpts().ProgramAction = frontend::ParseSyntaxOnly;
|
||||
invocation->getTargetOpts().Triple = "i386-unknown-linux-gnu";
|
||||
CompilerInstance compiler;
|
||||
compiler.setLLVMContext(new LLVMContext);
|
||||
compiler.setInvocation(invocation);
|
||||
compiler.createDiagnostics(0, NULL);
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
CLANG_LEVEL = ../..
|
||||
TESTNAME = Frontend
|
||||
LINK_COMPONENTS := core support mc
|
||||
LINK_COMPONENTS := support mc
|
||||
USEDLIBS = clangFrontendTool.a clangFrontend.a clangDriver.a \
|
||||
clangSerialization.a clangCodeGen.a clangParse.a clangSema.a \
|
||||
clangStaticAnalyzerCheckers.a clangStaticAnalyzerCore.a \
|
||||
|
Loading…
Reference in New Issue
Block a user