Skip to content

Commit 2569c6e

Browse files
committed
Merge branch 'master' into release-0.15.2
2 parents 99cd42a + 6d3923e commit 2569c6e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+2574
-1321
lines changed

.travis.yml

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,26 +39,29 @@ install:
3939
if [[ "${LLVM_PACKAGE}" == *3\.[567]* ]] && [[ "${CXX}" == "clang++" ]]; then
4040
sudo apt-get install --allow-unauthenticated -qq clang-3.4; export CXX="clang++-3.4";
4141
fi
42+
-
43+
if [[ "${OPTS}" == *TEST_COVERAGE*ON* ]]; then
44+
sudo pip install cpp-coveralls;
45+
fi
4246
env:
4347
- LLVM_PACKAGE="llvm-3.1 llvm-3.1-dev"
4448
- LLVM_PACKAGE="llvm-3.2 llvm-3.2-dev"
4549
- LLVM_PACKAGE="llvm-3.3 llvm-3.3-dev" TEST_DEBUG=1
4650
- LLVM_PACKAGE="llvm-3.3 llvm-3.3-dev"
4751
- LLVM_PACKAGE="llvm-3.4 llvm-3.4-dev" TEST_DEBUG=1
48-
- LLVM_PACKAGE="llvm-3.4 llvm-3.4-dev" OPTS="-DMULTILIB=ON" TEST_BITNESS=32
49-
- LLVM_PACKAGE="llvm-3.4 llvm-3.4-dev" OPTS="-DMULTILIB=ON" TEST_BITNESS=64
5052
- LLVM_PACKAGE="llvm-3.4 llvm-3.4-dev" TEST_DEBUG=1 OPTS="-DBUILD_SHARED_LIBS=ON"
5153
- LLVM_PACKAGE="llvm-3.4 llvm-3.4-dev" OPTS="-DBUILD_SHARED_LIBS=ON"
5254
- LLVM_PACKAGE="llvm-3.5 llvm-3.5-dev libedit2 libedit-dev" TEST_DEBUG=1
5355
- LLVM_PACKAGE="llvm-3.5 llvm-3.5-dev libedit2 libedit-dev"
56+
- LLVM_PACKAGE="llvm-3.5 llvm-3.5-dev libedit2 libedit-dev" OPTS="-DTEST_COVERAGE=ON"
5457
- LLVM_PACKAGE="llvm-3.6 llvm-3.6-dev libedit2 libedit-dev" TEST_DEBUG=1
55-
- LLVM_PACKAGE="llvm-3.6 llvm-3.6-dev libedit2 libedit-dev"
58+
- LLVM_PACKAGE="llvm-3.6 llvm-3.6-dev libedit2 libedit-dev" OPTS="-DMULTILIB=ON" TEST_BITNESS=32
59+
- LLVM_PACKAGE="llvm-3.6 llvm-3.6-dev libedit2 libedit-dev" OPTS="-DMULTILIB=ON" TEST_BITNESS=64
5660
- LLVM_PACKAGE="llvm-3.7 llvm-3.7-dev libedit2 libedit-dev" TEST_DEBUG=1
5761
- LLVM_PACKAGE="llvm-3.7 llvm-3.7-dev libedit2 libedit-dev"
5862
matrix:
5963
allow_failures:
60-
- env: LLVM_PACKAGE="llvm-3.6 llvm-3.6-dev libedit2 libedit-dev" TEST_DEBUG=1
61-
- env: LLVM_PACKAGE="llvm-3.6 llvm-3.6-dev libedit2 libedit-dev"
64+
- env: LLVM_PACKAGE="llvm-3.6 llvm-3.6-dev libedit2 libedit-dev" OPTS="-DMULTILIB=ON" TEST_BITNESS=32
6265
- env: LLVM_PACKAGE="llvm-3.7 llvm-3.7-dev libedit2 libedit-dev" TEST_DEBUG=1
6366
- env: LLVM_PACKAGE="llvm-3.7 llvm-3.7-dev libedit2 libedit-dev"
6467
script:
@@ -101,6 +104,12 @@ script:
101104
- ctest -j2 --verbose ${BUILD_SEL}
102105
- ctest -j2 --output-on-failure ${RUN_SEL}
103106

107+
after_success:
108+
-
109+
if [[ "${OPTS}" == *TEST_COVERAGE*ON* ]]; then
110+
coveralls -e runtime -e tests -e vcbuild --gcov gcov-4.9 --gcov-options '\-lp' > /dev/null 2>&1;
111+
fi
112+
104113
notifications:
105114
# Temporarily disabled due to time limit problems.
106115
# email:

CMakeLists.txt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,7 @@ file(GLOB IR_SRC ir/*.cpp)
228228
file(GLOB IR_HDR ir/*.h)
229229
set(DRV_SRC
230230
driver/cl_options.cpp
231+
driver/codegenerator.cpp
231232
driver/configfile.cpp
232233
driver/targetmachine.cpp
233234
driver/toobj.cpp
@@ -239,6 +240,7 @@ set(DRV_SRC
239240
set(DRV_HDR
240241
driver/linker.h
241242
driver/cl_options.h
243+
driver/codegenerator.h
242244
driver/configfile.h
243245
driver/ldc-version.h
244246
driver/targetmachine.h
@@ -325,7 +327,7 @@ if(MSVC)
325327
string(REGEX REPLACE "(^| ) */GR-? *( |$)" "\\1 \\2" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
326328

327329
add_definitions(-D_HAS_EXCEPTIONS=0)
328-
set(EXTRA_CXXFLAGS "/W0 /wd4996 /GF /GR- /EHs-c- /MP")
330+
set(EXTRA_CXXFLAGS "/GF /GR- /EHs-c- /MP")
329331
else()
330332
set(EXTRA_CXXFLAGS "")
331333
endif()
@@ -381,6 +383,19 @@ if( NOT WIN32 OR CYGWIN )
381383
endforeach()
382384
endif()
383385

386+
#
387+
# Enable instrumentation for code coverage analysis
388+
#
389+
set(TEST_COVERAGE OFF CACHE BOOL "instrument compiler for code coverage analysis")
390+
if(TEST_COVERAGE)
391+
if(CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang"))
392+
append("-O0 -g -fprofile-arcs -ftest-coverage" EXTRA_CXXFLAGS)
393+
append("--coverage" LLVM_LDFLAGS)
394+
else()
395+
message(WARNING "Coverage testing is not available.")
396+
endif()
397+
endif()
398+
384399
#
385400
# Set up the main ldc/ldc2 target.
386401
#

README.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
LDC – the LLVM-based D Compiler
22
===============================
33

4-
[![Build Status](https://travis-ci.org/ldc-developers/ldc.png?branch=master)](https://travis-ci.org/ldc-developers/ldc) [![Bountysource](https://www.bountysource.com/badge/tracker?tracker_id=283332)](https://www.bountysource.com/trackers/283332-ldc?utm_source=283332&utm_medium=shield&utm_campaign=TRACKER_BADGE)
4+
[![Build Status](https://travis-ci.org/ldc-developers/ldc.png?branch=master)][1]
5+
[![Test Coverage](https://coveralls.io/repos/ldc-developers/ldc/badge.svg)][2]
6+
[![Bountysource](https://www.bountysource.com/badge/tracker?tracker_id=283332)][3]
57

68
The LDC project aims to provide a portable D programming language
79
compiler with modern optimization and code generation capabilities.
@@ -52,3 +54,8 @@ For further documentation, contributor information, etc. please see
5254
the D wiki: http://wiki.dlang.org/LDC
5355

5456
Feedback of any kind is very much appreciated!
57+
58+
59+
[1]: https://travis-ci.org/ldc-developers/ldc "Build Status"
60+
[2]: https://coveralls.io/r/ldc-developers/ldc "Test Coverage"
61+
[3]: https://www.bountysource.com/trackers/283332-ldc?utm_source=283332&utm_medium=shield&utm_campaign=TRACKER_BADGE "Bountysource"

cmake/Modules/GetGitRevisionDescription.cmake

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ set(__get_git_revision_description YES)
4040
get_filename_component(_gitdescmoddir ${CMAKE_CURRENT_LIST_FILE} PATH)
4141

4242
function(get_git_head_revision _refspecvar _hashvar)
43-
set(GIT_PARENT_DIR "${CMAKE_SOURCE_DIR}")
43+
set(GIT_PARENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
4444
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
4545
while(NOT EXISTS "${GIT_DIR}") # .git dir not found, search parent directories
4646
set(GIT_PREVIOUS_PARENT "${GIT_PARENT_DIR}")
@@ -53,6 +53,13 @@ function(get_git_head_revision _refspecvar _hashvar)
5353
endif()
5454
set(GIT_DIR "${GIT_PARENT_DIR}/.git")
5555
endwhile()
56+
# check if this is a submodule
57+
if(NOT IS_DIRECTORY ${GIT_DIR})
58+
file(READ ${GIT_DIR} submodule)
59+
string(REGEX REPLACE "gitdir: (.*)\n$" "\\1" GIT_DIR_RELATIVE ${submodule})
60+
get_filename_component(SUBMODULE_DIR ${GIT_DIR} PATH)
61+
get_filename_component(GIT_DIR ${SUBMODULE_DIR}/${GIT_DIR_RELATIVE} ABSOLUTE)
62+
endif()
5663
set(GIT_DATA "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/git-data")
5764
if(NOT EXISTS "${GIT_DATA}")
5865
file(MAKE_DIRECTORY "${GIT_DATA}")

cmake/Modules/GetGitRevisionDescription.cmake.in

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,12 @@ if(HEAD_CONTENTS MATCHES "ref")
2323
string(REPLACE "ref: " "" HEAD_REF "${HEAD_CONTENTS}")
2424
if(EXISTS "@GIT_DIR@/${HEAD_REF}")
2525
configure_file("@GIT_DIR@/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
26-
elseif(EXISTS "@GIT_DIR@/logs/${HEAD_REF}")
27-
configure_file("@GIT_DIR@/logs/${HEAD_REF}" "@GIT_DATA@/head-ref" COPYONLY)
28-
set(HEAD_HASH "${HEAD_REF}")
26+
else()
27+
configure_file("@GIT_DIR@/packed-refs" "@GIT_DATA@/packed-refs" COPYONLY)
28+
file(READ "@GIT_DATA@/packed-refs" PACKED_REFS)
29+
if(${PACKED_REFS} MATCHES "([0-9a-z]*) ${HEAD_REF}")
30+
set(HEAD_HASH "${CMAKE_MATCH_1}")
31+
endif()
2932
endif()
3033
else()
3134
# detached HEAD

dmd2/builtin.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ Expression *eval_llvmminnum(Loc loc, FuncDeclaration *fd, Expressions *arguments
166166
assert(arg0->op == TOKfloat64);
167167
Expression *arg1 = (*arguments)[1];
168168
assert(arg1->op == TOKfloat64);
169-
return new RealExp(loc, fmin(arg0->toReal(), arg1->toReal()), type);
169+
return new RealExp(loc, fminl(arg0->toReal(), arg1->toReal()), type);
170170
}
171171

172172
Expression *eval_llvmmaxnum(Loc loc, FuncDeclaration *fd, Expressions *arguments)
@@ -176,7 +176,7 @@ Expression *eval_llvmmaxnum(Loc loc, FuncDeclaration *fd, Expressions *arguments
176176
assert(arg0->op == TOKfloat64);
177177
Expression *arg1 = (*arguments)[1];
178178
assert(arg1->op == TOKfloat64);
179-
return new RealExp(loc, fmax(arg0->toReal(), arg1->toReal()), type);
179+
return new RealExp(loc, fmaxl(arg0->toReal(), arg1->toReal()), type);
180180
}
181181

182182
Expression *eval_llvmfloor(Loc loc, FuncDeclaration *fd, Expressions *arguments)

0 commit comments

Comments
 (0)