mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-02-15 19:33:13 +01:00
Merge branch 'llvm3.0' into master
This commit is contained in:
47
gen/main.cpp
47
gen/main.cpp
@@ -7,11 +7,11 @@
|
||||
#include "llvm/LinkAllVMCore.h"
|
||||
#include "llvm/Linker.h"
|
||||
#include "llvm/LLVMContext.h"
|
||||
#include "llvm/Target/SubtargetFeature.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Target/TargetOptions.h"
|
||||
#include "llvm/Target/TargetRegistry.h"
|
||||
#include "llvm/Target/TargetSelect.h"
|
||||
#include "llvm/Support/TargetSelect.h"
|
||||
#include "llvm/Support/TargetRegistry.h"
|
||||
#include "llvm/MC/SubtargetFeature.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -308,7 +308,7 @@ int main(int argc, char** argv)
|
||||
{
|
||||
if (libs)
|
||||
{
|
||||
for (int i = 0; i < libs->dim; i++)
|
||||
for (unsigned i = 0; i < libs->dim; i++)
|
||||
{
|
||||
char* lib = (char *)libs->data[i];
|
||||
char *arg = (char *)mem.malloc(strlen(lib) + 3);
|
||||
@@ -435,10 +435,11 @@ int main(int argc, char** argv)
|
||||
// Allocate target machine.
|
||||
|
||||
// first initialize llvm
|
||||
#define LLVM_TARGET(A) LLVMInitialize##A##TargetInfo(); LLVMInitialize##A##Target(); LLVMInitialize##A##AsmPrinter();
|
||||
// this is defined to be LLVM_TARGET(target name 1) LLVM_TARGET(target name 2) ...
|
||||
LDC_TARGETS
|
||||
#undef LLVM_TARGET
|
||||
llvm::InitializeAllTargetInfos();
|
||||
llvm::InitializeAllTargets();
|
||||
llvm::InitializeAllAsmPrinters();
|
||||
llvm::InitializeAllAsmParsers();
|
||||
llvm::InitializeAllTargetMCs();
|
||||
|
||||
const llvm::Target *theTarget = NULL;
|
||||
// Check whether the user has explicitly specified an architecture to compile for.
|
||||
@@ -476,9 +477,8 @@ LDC_TARGETS
|
||||
if (mCPU.size() || mAttrs.size())
|
||||
{
|
||||
llvm::SubtargetFeatures Features;
|
||||
Features.setCPU(mCPU);
|
||||
for (unsigned i = 0; i != mAttrs.size(); ++i)
|
||||
Features.AddFeature(mAttrs[i]);
|
||||
Features.AddFeature(mAttrs[i]);
|
||||
FeaturesStr = Features.getString();
|
||||
}
|
||||
|
||||
@@ -487,7 +487,8 @@ LDC_TARGETS
|
||||
//assert(target.get() && "Could not allocate target machine!");
|
||||
//gTargetMachine = target.get();
|
||||
|
||||
llvm::TargetMachine* target = theTarget->createTargetMachine(triple, FeaturesStr);
|
||||
llvm::TargetMachine* target = theTarget->createTargetMachine(triple, mCPU, FeaturesStr,
|
||||
mRelocModel, mCodeModel);
|
||||
gTargetMachine = target;
|
||||
|
||||
gTargetData = target->getTargetData();
|
||||
@@ -649,7 +650,7 @@ LDC_TARGETS
|
||||
// Build import search path
|
||||
if (global.params.imppath)
|
||||
{
|
||||
for (int i = 0; i < global.params.imppath->dim; i++)
|
||||
for (unsigned i = 0; i < global.params.imppath->dim; i++)
|
||||
{
|
||||
char *path = (char *)global.params.imppath->data[i];
|
||||
Strings *a = FileName::splitPath(path);
|
||||
@@ -666,7 +667,7 @@ LDC_TARGETS
|
||||
// Build string import search path
|
||||
if (global.params.fileImppath)
|
||||
{
|
||||
for (int i = 0; i < global.params.fileImppath->dim; i++)
|
||||
for (unsigned i = 0; i < global.params.fileImppath->dim; i++)
|
||||
{
|
||||
char *path = (char *)global.params.fileImppath->data[i];
|
||||
Strings *a = FileName::splitPath(path);
|
||||
@@ -683,7 +684,7 @@ LDC_TARGETS
|
||||
// Create Modules
|
||||
Modules modules;
|
||||
modules.reserve(files.dim);
|
||||
for (int i = 0; i < files.dim; i++)
|
||||
for (unsigned i = 0; i < files.dim; i++)
|
||||
{ Identifier *id;
|
||||
char *ext;
|
||||
char *name;
|
||||
@@ -790,7 +791,7 @@ LDC_TARGETS
|
||||
}
|
||||
|
||||
// Read files, parse them
|
||||
for (int i = 0; i < modules.dim; i++)
|
||||
for (unsigned i = 0; i < modules.dim; i++)
|
||||
{
|
||||
m = (Module *)modules.data[i];
|
||||
if (global.params.verbose)
|
||||
@@ -825,7 +826,7 @@ LDC_TARGETS
|
||||
* line switches and what else is imported, they are generated
|
||||
* before any semantic analysis.
|
||||
*/
|
||||
for (int i = 0; i < modules.dim; i++)
|
||||
for (unsigned i = 0; i < modules.dim; i++)
|
||||
{
|
||||
m = (Module *)modules.data[i];
|
||||
if (global.params.verbose)
|
||||
@@ -838,7 +839,7 @@ LDC_TARGETS
|
||||
#endif
|
||||
|
||||
// load all unconditional imports for better symbol resolving
|
||||
for (int i = 0; i < modules.dim; i++)
|
||||
for (unsigned i = 0; i < modules.dim; i++)
|
||||
{
|
||||
m = (Module *)modules.data[i];
|
||||
if (global.params.verbose)
|
||||
@@ -849,7 +850,7 @@ LDC_TARGETS
|
||||
fatal();
|
||||
|
||||
// Do semantic analysis
|
||||
for (int i = 0; i < modules.dim; i++)
|
||||
for (unsigned i = 0; i < modules.dim; i++)
|
||||
{
|
||||
m = (Module *)modules.data[i];
|
||||
if (global.params.verbose)
|
||||
@@ -863,7 +864,7 @@ LDC_TARGETS
|
||||
Module::runDeferredSemantic();
|
||||
|
||||
// Do pass 2 semantic analysis
|
||||
for (int i = 0; i < modules.dim; i++)
|
||||
for (unsigned i = 0; i < modules.dim; i++)
|
||||
{
|
||||
m = (Module *)modules.data[i];
|
||||
if (global.params.verbose)
|
||||
@@ -874,7 +875,7 @@ LDC_TARGETS
|
||||
fatal();
|
||||
|
||||
// Do pass 3 semantic analysis
|
||||
for (int i = 0; i < modules.dim; i++)
|
||||
for (unsigned i = 0; i < modules.dim; i++)
|
||||
{
|
||||
m = (Module *)modules.data[i];
|
||||
if (global.params.verbose)
|
||||
@@ -904,7 +905,7 @@ LDC_TARGETS
|
||||
{
|
||||
// Do pass 3 semantic analysis on all imported modules,
|
||||
// since otherwise functions in them cannot be inlined
|
||||
for (int i = 0; i < Module::amodules.dim; i++)
|
||||
for (unsigned i = 0; i < Module::amodules.dim; i++)
|
||||
{
|
||||
m = (Module *)Module::amodules.data[i];
|
||||
if (global.params.verbose)
|
||||
@@ -944,7 +945,7 @@ LDC_TARGETS
|
||||
llvm::LLVMContext& context = llvm::getGlobalContext();
|
||||
|
||||
// Generate output files
|
||||
for (int i = 0; i < modules.dim; i++)
|
||||
for (unsigned i = 0; i < modules.dim; i++)
|
||||
{
|
||||
m = (Module *)modules.data[i];
|
||||
if (global.params.verbose)
|
||||
@@ -1019,7 +1020,7 @@ LDC_TARGETS
|
||||
|
||||
/* Delete .obj files and .exe file
|
||||
*/
|
||||
for (int i = 0; i < modules.dim; i++)
|
||||
for (unsigned i = 0; i < modules.dim; i++)
|
||||
{
|
||||
m = (Module *)modules.data[i];
|
||||
m->deleteObjFile();
|
||||
|
||||
Reference in New Issue
Block a user