Mercurial > projects > ldc
changeset 1068:7db4bb9602ed
Automated merge with http://hg.dsource.org/projects/ldc
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Sun, 08 Mar 2009 16:22:06 +0100 |
parents | f0b6549055ab (diff) 7ce8355fbcc6 (current diff) |
children | 8038b106c458 |
files | gen/todebug.cpp |
diffstat | 15 files changed, 74 insertions(+), 34 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgignore Sun Mar 08 16:21:56 2009 +0100 +++ b/.hgignore Sun Mar 08 16:22:06 2009 +0100 @@ -28,9 +28,9 @@ ^impcnvgen\.make$ ^ldc\.make$ ^revisions\.pl$ +^gen/revisions\.h$ ^dmd2?/idgen$ ^dmd2?/impcnvgen$ -^dmd2?/revisions\.h$ ^dmd2?/impcnvtab\.c$ ^dmd2?/id\.c$ ^dmd2?/id\.h$
--- a/CMakeLists.txt Sun Mar 08 16:21:56 2009 +0100 +++ b/CMakeLists.txt Sun Mar 08 16:22:06 2009 +0100 @@ -168,13 +168,21 @@ add_executable(${LDC_EXE} ${LDC_SOURCE_FILES}) # generate revision info -configure_file(${PROJECT_SOURCE_DIR}/revisions.pl.in ${PROJECT_BINARY_DIR}/revisions.pl) +configure_file( + ${PROJECT_SOURCE_DIR}/revisions.pl.in + ${PROJECT_BINARY_DIR}/revisions.pl + @ONLY +) add_custom_command( - OUTPUT ${PROJECT_BINARY_DIR}/${DMDFE_PATH}/revisions.h + OUTPUT ${PROJECT_BINARY_DIR}/gen/revisions.h COMMAND ${PERL_EXECUTABLE} ${PROJECT_BINARY_DIR}/revisions.pl - WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/${DMDFE_PATH} + WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/gen ) -add_custom_target(gen_revs_h ALL DEPENDS ${PROJECT_BINARY_DIR}/${DMDFE_PATH}/revisions.h) +add_custom_target( + gen_revs_h ALL + DEPENDS ${PROJECT_BINARY_DIR}/revisions.pl + ${PROJECT_BINARY_DIR}/gen/revisions.h +) add_dependencies(${LDC_EXE} gen_revs_h) #
--- a/bin/ldmd Sun Mar 08 16:21:56 2009 +0100 +++ b/bin/ldmd Sun Mar 08 16:22:06 2009 +0100 @@ -14,7 +14,6 @@ fi declare -a ARGS -SeenFile=0 IDX=0 for arg; do case "$arg" in @@ -29,11 +28,6 @@ # Are these ever used? arg="-hidden-debug${arg:1}" ;; - -*) - ;; - *) - SeenFile=1 - ;; esac ARGS[IDX++]="$arg" done
--- a/dmd/mars.c Sun Mar 08 16:21:56 2009 +0100 +++ b/dmd/mars.c Sun Mar 08 16:22:06 2009 +0100 @@ -36,7 +36,7 @@ #include "expression.h" #include "lexer.h" -#include "revisions.h" +#include "gen/revisions.h" Global global; @@ -61,7 +61,7 @@ written = "written by Walter Bright and Tomas Lindquist Olsen"; version = "v1.039"; ldc_version = LDC_REV; - llvm_version = LLVM_REV; + llvm_version = LLVM_REV_STR; global.structalign = 8; // This should only be used as a global, so the other fields are
--- a/dmd/mars.h Sun Mar 08 16:21:56 2009 +0100 +++ b/dmd/mars.h Sun Mar 08 16:22:06 2009 +0100 @@ -66,10 +66,6 @@ OSSolaris, }; -// make it easier to test new linkage types -#define TEMPLATE_LINKAGE_TYPE llvm::GlobalValue::LinkOnceLinkage -#define TYPEINFO_LINKAGE_TYPE llvm::GlobalValue::LinkOnceLinkage - // Put command line switches in here struct Param {
--- a/dmd2/mars.h Sun Mar 08 16:21:56 2009 +0100 +++ b/dmd2/mars.h Sun Mar 08 16:22:06 2009 +0100 @@ -66,10 +66,6 @@ OSSolaris, }; -// make it easier to test new linkage types -#define TEMPLATE_LINKAGE_TYPE llvm::GlobalValue::LinkOnceLinkage -#define TYPEINFO_LINKAGE_TYPE llvm::GlobalValue::LinkOnceLinkage - // Put command line switches in here struct Param {
--- a/gen/abi-x86-64.cpp Sun Mar 08 16:21:56 2009 +0100 +++ b/gen/abi-x86-64.cpp Sun Mar 08 16:22:06 2009 +0100 @@ -32,9 +32,9 @@ * and the pointer in memory, as printf expects it. */ -#include "dmd/mtype.h" -#include "dmd/declaration.h" -#include "dmd/aggregate.h" +#include "mtype.h" +#include "declaration.h" +#include "aggregate.h" #include "gen/llvm.h" #include "gen/tollvm.h"
--- a/gen/cl_helpers.cpp Sun Mar 08 16:21:56 2009 +0100 +++ b/gen/cl_helpers.cpp Sun Mar 08 16:22:06 2009 +0100 @@ -1,7 +1,7 @@ #include "gen/cl_helpers.h" -#include "dmd/root.h" -#include "dmd/mem.h" +#include "root.h" +#include "mem.h" #include <cctype> // isupper, tolower #include <algorithm>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gen/linkage.h Sun Mar 08 16:22:06 2009 +0100 @@ -0,0 +1,31 @@ +#ifndef LDC_GEN_LINKAGE_H +#define LDC_GEN_LINKAGE_H + +#include "gen/revisions.h" + +// Make it easier to test new linkage types +// Also used to adapt to some changes in LLVM between 2.5 and 2.6 + + +// LLVM r66339 introduces LinkOnceODRLinkage, which is just what we want here. +// (It also renamed LinkOnceLinkage, so this #if is needed for LDC to compile +// with both 2.5 and trunk) +#if LLVM_REV >= 66339 +# define TEMPLATE_LINKAGE_TYPE llvm::GlobalValue::LinkOnceODRLinkage +# define TYPEINFO_LINKAGE_TYPE llvm::GlobalValue::LinkOnceODRLinkage +// The One-Definition-Rule shouldn't matter for debug info, right? +# define DEBUGINFO_LINKONCE_LINKAGE_TYPE \ + llvm::GlobalValue::LinkOnceAnyLinkage + +// For 2.5 and any LLVM revision before 66339 we want to use LinkOnceLinkage +// It's equivalent to LinkOnceAnyLinkage in trunk except that the inliner had a +// hack (removed in r66339) to allow inlining of templated functions even though +// LinkOnce doesn't technically allow that. +#else +# define TEMPLATE_LINKAGE_TYPE llvm::GlobalValue::LinkOnceLinkage +# define TYPEINFO_LINKAGE_TYPE llvm::GlobalValue::LinkOnceLinkage +# define DEBUGINFO_LINKONCE_LINKAGE_TYPE \ + llvm::GlobalValue::LinkOnceLinkage +#endif + +#endif
--- a/gen/todebug.cpp Sun Mar 08 16:21:56 2009 +0100 +++ b/gen/todebug.cpp Sun Mar 08 16:22:06 2009 +0100 @@ -12,6 +12,7 @@ #include "gen/tollvm.h" #include "gen/logger.h" #include "gen/llvmhelpers.h" +#include "gen/linkage.h" #include "ir/irmodule.h" @@ -33,7 +34,9 @@ */ static LLGlobalVariable* emitDwarfGlobalDecl(const LLStructType* type, const char* name, bool linkonce=false) { - LLGlobalValue::LinkageTypes linkage = linkonce ? LLGlobalValue::LinkOnceLinkage : LLGlobalValue::InternalLinkage; + LLGlobalValue::LinkageTypes linkage = linkonce + ? DEBUGINFO_LINKONCE_LINKAGE_TYPE + : LLGlobalValue::InternalLinkage; LLGlobalVariable* gv = new LLGlobalVariable(type, true, linkage, NULL, name, gIR->module); gv->setSection("llvm.metadata"); return gv;
--- a/gen/tollvm.cpp Sun Mar 08 16:21:56 2009 +0100 +++ b/gen/tollvm.cpp Sun Mar 08 16:22:06 2009 +0100 @@ -19,6 +19,7 @@ #include "gen/typeinf.h" #include "gen/complex.h" #include "gen/llvmhelpers.h" +#include "gen/linkage.h" bool DtoIsPassedByRef(Type* type) {
--- a/gen/toobj.cpp Sun Mar 08 16:21:56 2009 +0100 +++ b/gen/toobj.cpp Sun Mar 08 16:22:06 2009 +0100 @@ -362,7 +362,7 @@ gcc, &Args[0], 0, 0, 0, 0, &ErrMsg); if (R) { - error("failed to invoke gcc"); + error("Failed to invoke gcc. %s", ErrMsg.c_str()); fatal(); } }
--- a/gen/typinf.cpp Sun Mar 08 16:21:56 2009 +0100 +++ b/gen/typinf.cpp Sun Mar 08 16:22:06 2009 +0100 @@ -39,6 +39,7 @@ #include "gen/arrays.h" #include "gen/structs.h" #include "gen/classes.h" +#include "gen/linkage.h" #include "ir/irvar.h"
--- a/revisions.pl.in Sun Mar 08 16:21:56 2009 +0100 +++ b/revisions.pl.in Sun Mar 08 16:22:06 2009 +0100 @@ -7,15 +7,20 @@ my $llvm_src = `perl @LLVM_CONFIG@ --src-root`; -my $llvm_rev = `svnversion $llvm_src`; +my $llvm_rev = `svnversion --committed $llvm_src`; +my $llvm_rev_str; +my $llvm_rev_nr; -if ($llvm_rev =~ s/(\d+M?)\s+$/$1/) { - $llvm_rev = qq!#define LLVM_REV "LLVM rev. $llvm_rev"! +if ($llvm_rev =~ /^\s*(\d+:)?(?<str>(?<nr>\d+)[MSP]*)\s*$/) { + $llvm_rev_str = qq!#define LLVM_REV_STR "LLVM rev. $+{str}"!; + $llvm_rev_nr = "$+{nr}"; } else { my $llvm_lib = `perl @LLVM_CONFIG@ --libdir`; $llvm_lib =~ s/\s+$//; $llvm_rev = ctime(stat($llvm_lib)->mtime) if (-d $llvm_lib); - $llvm_rev = qq!#include "llvm/Config/config.h"\n#define LLVM_REV PACKAGE_STRING" ($llvm_rev)"!; + $llvm_rev_str = qq!#include "llvm/Config/config.h"\n#define LLVM_REV_STR PACKAGE_STRING" ($llvm_rev)"!; + # Assume latest release, so < any version we should be testing for. + $llvm_rev_nr = 0; } my $ldc_rev = `hg -R@PROJECT_SOURCE_DIR@ log -r qparent --template '{rev}:{node|short} ({date|isodate})' 2>/dev/null || hg -R@PROJECT_SOURCE_DIR@ tip --template '{rev}:{node|short} ({date|isodate})'`; @@ -23,7 +28,12 @@ my $out = qq!#ifndef LDC_VERSIONS_H #define LDC_VERSIONS_H -$llvm_rev +// LLVM version string, for use in -version output +$llvm_rev_str +// LLVM svn revision number, used to adapt to changes in LLVM +// (Is 0 if LLVM is not an SVN version) +#define LLVM_REV $llvm_rev_nr +// LDC version string, for use in -version output #define LDC_REV "rev. $ldc_rev" #endif // LDC_VERSIONS_H\n!;
--- a/runtime/CMakeLists.txt Sun Mar 08 16:21:56 2009 +0100 +++ b/runtime/CMakeLists.txt Sun Mar 08 16:22:06 2009 +0100 @@ -13,7 +13,7 @@ set(D_FLAGS -g -w -d CACHE STRING "runtime build flags, separated by ;") if(BUILD_SHARED_LIBS) - list(APPEND D_FLAGS -fPIC) + list(APPEND D_FLAGS -relocation-model=pic) endif(BUILD_SHARED_LIBS) # build tango for D1, druntime for D2