Commit Graph

2432 Commits

Author SHA1 Message Date
kai
5e03034654 Make LDC compile with LLVM 3.2 again. 2012-09-29 20:51:21 +02:00
David Nadlinger
3eea8de2cf D1 build fix.
Sorry for the breakage, I intended to push the previous change as a pull
request for a CI run, not the main repository.
2012-09-28 02:03:39 +02:00
David Nadlinger
5f6447e52c Fix GitHub issue #168 – alignment of globals. 2012-09-28 01:57:21 +02:00
David Nadlinger
4b3662adfd Fixed unlisted vector handling bug.
Thanks to filwit on IRC for mentioning it.
2012-09-28 00:34:31 +02:00
David Nadlinger
c6abdcf4a4 Don't set TypePointer::isunsigned to true in the frontend.
The previous solution was problematic because the change was language-
visble via the isUnsigned trait. Now, pointers are simply explicitly
checked for in the relevant places. (Note that there might be cases in
the diff where a direct isunsigned() call would have been appropriate –
I only checked for instances where the type clearly cannot be a pointer,
but chose to go the safe route in replicating existing behavior
otherwise).

Fixes DMD testcase 'traits'.
2012-09-28 00:28:49 +02:00
David Nadlinger
e7c72b072b Default to C-style variadics for all calling conventions.
Fixes DMD testcase 'callingconv'.
2012-09-27 23:53:04 +02:00
David Nadlinger
3f9f13594c Work around unmerged types being returned from frontend.
Fixes DMD testcase 'funclit'.
2012-09-27 23:50:52 +02:00
David Nadlinger
4a1cbc2d33 Debug log prettification: Indent toElemDtor() children. 2012-09-27 22:01:53 +02:00
David Nadlinger
9e8ec9613c Removed superfluous newline in log message. 2012-09-27 21:55:09 +02:00
David Nadlinger
25beaf41b5 Fix base class contract invocation.
Fixes DMD testcase 'testcontracts'.
2012-09-27 21:05:51 +02:00
David Nadlinger
f54fa0077a Only allow a single D main() function.
Fixes DMD testcase 'fail5634'.
2012-09-27 20:22:52 +02:00
David Nadlinger
8968103b8b Some verbose logging output prettification. 2012-09-21 18:54:23 +02:00
David Nadlinger
754cf3805f Added first draft of useful README.
Needs to be expanded with a short section on contributing (and a
separate CONTRIBUTING file, for the GitHub feature), ...

LICENSE also needs an overhaul, and our files need license headers.
2012-09-18 23:41:23 +02:00
David Nadlinger
146622c5eb Merge pull request #165 from klickverbot/contract-out
Fix #162 - contracts for member functions with out parameters.
2012-09-17 05:51:38 -07:00
David Nadlinger
9e64918efd Fix #162 - contracts for member functions with out parameters.
Also documented the code and changed it to explicitly use IN_LLVM
for the LDC specific parts in order to make debugging/frontend
merging easier.
2012-09-17 01:46:48 +02:00
David Nadlinger
0e6639f6be IRC/ML notifications for Travis CI. 2012-09-16 22:19:04 +02:00
David Nadlinger
165e0ef3c6 Fix typo in D1 part of 940d6e9. 2012-09-16 22:07:30 +02:00
David Nadlinger
b11c49a9c9 Fix D1 build.
This applies the changes from 9a3cdf2e to dmd/ as well.
2012-09-16 22:04:39 +02:00
David Nadlinger
6ecd2e993b Initial config for Travis CI (travis-ci.org).
Doesn't run any tests so far, only tests if everything builds.
2012-09-16 22:00:42 +02:00
kai
940d6e907f Take advantage of Triple and TargetData.
A lot of system specific knowledge is already present in LLVM. This is used to populate several fields in global.params instead of hard coded values in main(). Ensures that the frontend and LLVM have always the same values.
2012-09-16 19:50:21 +02:00
David Nadlinger
98f9742db5 FuncDeclaration::semantic3 cleanup.
Cosmetical changes only.
2012-09-16 19:22:17 +02:00
kai
59cf17a06b Rename variables for options ms-link and ms-lib.
This prevents a name clash and fixes #164.
2012-09-16 14:35:33 +02:00
kai
c6b3f0a4e1 Add support for MS Link.
If the target OS is Windows using the MS runtime then use LINK.EXE as the linker.
2012-09-16 13:49:47 +02:00
kai
9fad5fcfbd Remove unused inifile implementation.
LDC uses libconfig. The inifile implementation is dead code.
2012-09-16 13:45:28 +02:00
kai
9bc844b6dd Refactor code to create directory into new function. 2012-09-16 12:00:14 +02:00
kai
1773f7c7d9 Refactor common code to execute a program.
The common code for linking, creating libraries and running the created program is moved into a new function `ExecuteToolAndWait`.
2012-09-16 10:54:28 +02:00
kai
6e554c6647 Add support for MS Lib.
If the target OS is Windows using the MS runtime then use LIB.EXE as the archiver.
2012-09-16 00:03:27 +02:00
kai
c5fcd255ff Cleanup of intrinsics. 2012-09-15 20:13:50 +02:00
kai
69e305b10b Remove quotes from arguments for add_custom_target.
This fixes #163.
2012-09-15 16:29:30 +02:00
kai
2e47e98c2c Fix access violation.
Variable `args` was used without first checking for valid values. You could crash LDC by entering something like 'pragma(intrinsic) void crash();' in the source file.
2012-09-15 16:15:02 +02:00
kai
7d1ec52c68 Implement the xgetbv opcode.
This solves a FIXME in core.cpuid.
2012-09-14 21:10:39 +02:00
kai
ebf5d8b92e Add missing return statement.
This fixes #159.
2012-09-11 18:05:13 +02:00
kai
9dfc638edf Fix path of included header IRBuilder.h
As usual this file has moved around from version to version.
2012-09-10 18:00:21 +02:00
David Nadlinger
1bc5dad066 druntime updates – fixes #158. 2012-09-09 23:20:18 +02:00
kai
d57eaa49ae Use new functions appendToGlobalCtors() and appendToGlobalDtors.
This simplifies the code in module.cpp a bit. But it is also the base to implement a pragma to place an arbitrary function in llvm.global_ctors and llvm.global_dtors.
2012-09-09 20:41:51 +02:00
kai
e78ff5a131 Fix broken build with LLVM 3.0.
The method ConstantVector::getSplat() does not existin LLVM 3.0. Workarouund is to create a vector and use ConstantVector::get().
2012-09-09 20:36:48 +02:00
kai
4b0c4bf4ae Get rid of global.params.dataLayout.
The string representation of the data layout is retrieved from the TargetData class (in main) and passed via global.params.dataLayout to the module. Since the gTargetData is also a global variable it makes no sense to pass this information using another global variable.
2012-09-08 20:25:42 +02:00
kai
0a53cb2ac0 Add -vectorize to the optimizer. This is available starting with LLVM 3.1. 2012-09-08 13:36:31 +02:00
kai
4ae64dd2e7 Fix size returned by os_critsecsize() and construct type for D_CRITIAL_SECTION on Windows. 2012-09-08 11:49:37 +02:00
kai
e333b76759 Use monitor_.d instead of monitor.c for Win64.
The compile error in monitor.c using MSVC is then irrelevant.
2012-09-07 23:56:04 +02:00
kai
9b93382417 Some fixes in the operands of 64bit assembler. 2012-09-07 23:45:45 +02:00
kai
b49f41fc62 Accidently removed monitor_.d from build. 2012-09-07 19:33:06 +02:00
kai
5bc41c963f Add Win64 support.
- Add new files and remove unused files.
- Only create .bc files if requested.
  (Creating .bc and .obj files at the same time confuses the LIB tool. Maybe a CMake bug....)
- Add references to new commits for Win64 in druntime and phobos.
2012-09-07 18:54:29 +02:00
David Nadlinger
bf0d8afc88 Merge branch 'dmd-2.060' into master.
Conflicts:
	dmd2/func.c
	dmd2/mars.c
2012-09-07 04:15:44 +02:00
David Nadlinger
2750541d0a druntime and dmd-testsuite updates. 2012-09-07 03:51:33 +02:00
David Nadlinger
81b462b129 D1 build fix. 2012-09-07 03:51:33 +02:00
David Nadlinger
bebc5cce28 Workaround for Voldemort return type handling issues.
See the comment in DtoCallFunction for an explanation of what is
going on.

The struct zero initialization code was also refactored out to
AssignExp::toElem and modified so that it is only triggered
on integer->struct assignments, not for any types where the
modifier-stripped types don't match up. This would have lead to
silently wrong code in the cases where the assert would have been
triggered otherwise.

Fixes the Phobos testsuite build.
2012-09-07 03:51:33 +02:00
David Nadlinger
139e1a9c2a Implement stripModifiers using castMod(0).
Reduces the potentail for bugs in the fragile code; castMod(0) is
used like this in DMD code.
2012-09-07 03:51:33 +02:00
David Nadlinger
57b2eb3dad Fixed crash on nested functions with parameters that have a postblit.
Implementing the recursion in DeclarationExp::apply, which seems more
natural, lead to a "cannot interpret" CTFE error in Phobos.

An upstream bug will be raised about this.
2012-09-07 03:51:33 +02:00
David Nadlinger
88f08cf927 Workaround for LLVM bug 11479.
The LLVM module name doesn't really seem to impact much aynway.
2012-09-07 03:51:33 +02:00