Commit Graph

329 Commits

Author SHA1 Message Date
David Nadlinger
0954b2763a [Trivial] Fixed class/struct mismatch. 2013-10-13 21:22:10 +02:00
David Nadlinger
1242be25d0 Remove unused, empty Ir type.
The codegen parameter was changed to IRState instead of
removing it to set the stage for an eventual eradication
of the gIR global.
2013-10-13 19:44:29 +02:00
David Nadlinger
c6cf35a012 Remove unused DMD IRState implementations. 2013-10-13 19:20:37 +02:00
David Nadlinger
787c147986 Use Module::members -> Dsymbol::codegen to define symbols.
This commit fundamentally changes the way symbol emission in
LDC works: Previously, whenever a declaration was used in some
way, the compiler would check whether it actually needs to be
defined in the currently processed module, based only on the
symbol itself. This lack of contextual information proved to
be a major problem in correctly handling emission of templates
(see e.g. #454).

Now, the DtoResolve…() family of functions and similar only
ever declare the symbols, and definition is handled by doing
a single pass over Module::members for the root module. This
is the same strategy that DMD uses as well, which should
also reduce the maintainance burden down the road (which is
important as during the last few releases, there was pretty
much always a symbol emission related problem slowing us
down).

Our old approach might have been a bit better tuned w.r.t.
avoiding emission of unneeded template instances, but 2.064
will bring improvements here (DMD: FuncDeclaration::toObjFile).
Barring such issues, the change shoud also marginally improve
compile times because of declarations no longer being emitted
when they are not needed.

In the future, we should also consider refactoring the code
so that it no longer directly accesses Dsymbol::ir but uses
wrapper functions that ensure that the appropriate
DtoResolve…() function has been called.

GitHub: Fixes #454.
2013-10-13 19:18:24 +02:00
David Nadlinger
e1abb01e55 Remove superfluous Dsymbol::codegen overload. 2013-10-13 01:00:25 +02:00
David Nadlinger
b6a73fbd65 More trivial diff reduction now that #484 is in. 2013-10-05 22:04:54 +02:00
David Nadlinger
ee7fe16e40 Low-hanging DMD diff reduction fruit.
The trailing whitespace isn't pretty, but removes the
files completly from the diff.
2013-10-05 21:19:35 +02:00
Alexey Prokhin
8d54cc539f Clean up mtype 2013-10-05 19:04:18 +04:00
Alexey Prokhin
b819975c84 Eliminate the need for TypeFunction::funcdecl 2013-10-05 19:03:03 +04:00
kai
3dd67a7631 Add more #if's around LDC specific code 2013-08-18 20:05:24 +02:00
kai
f4637b1c3d Minimize differences to DMD source. 2013-08-08 06:51:18 +02:00
Alexey Prokhin
54078eca66 Set global.params.isOS variables so we do not have to modify dmd frontend to use targetTriple 2013-07-29 18:49:09 +04:00
Alexey Prokhin
fb31047dcd Prettify our C functions' signatures patch to have a chance to be included into dmd 2013-07-29 16:52:42 +04:00
Alexey Prokhin
d45931972c Move Target implementation out of dmdfe 2013-07-29 11:18:25 +04:00
Alexey Prokhin
153febd093 Remove minor differences with upstream 2013-07-29 11:18:18 +04:00
Alexey Prokhin
21b07c783a Remove Module::moduleInfoType 2013-07-28 21:59:01 +04:00
Alexey Prokhin
69e7907875 Move implementation of Module::buildTargetFiles and Module::buildFilePath to gem/module.cpp 2013-07-28 21:17:25 +04:00
kai
a2f7246c49 Fix for part 1 of issue 424.
Yet another difference between static arrays and vectors. Initializing a static
array with one element is handled especially. This fix adds the same handling for
vector types.
2013-07-04 08:06:09 +02:00
kai
1a8c3588b5 Fix for issue #420.
The frontend only creates a scalar literal instead of an
array literal in order to initialize a vector field. This
commit adds the missing code.
2013-07-01 00:48:44 +02:00
kai
7faa23f99c Merge of v2.063.2 2013-06-29 19:01:42 +02:00
kai
aa143b560c Include Git revision in version info.
CMakeLists.txt contains now the version numbers for DMD and (next) LDC release.
If a .git folder is found then the LDC version is replaced by the first 6 chars
of the Git revision.

Possible improvements:

- If the build is not done at the master branch then it could be useful to check for a tag and use the tag instead of the revision. (for release builds)
- Maybe it is useful to include the branch name.

This fixes issue #366.
2013-06-21 06:47:32 +02:00
David Nadlinger
235bb94878 Make -release only disable bounds checking in non-@safe code. 2013-06-17 13:31:21 +02:00
David Nadlinger
480d05c76e Removed unused and broken template instantiation origin detection.
Having something like this would be useful in determining
whether to define a given template symbol during codegen, but
the frontend sometimes produces TemplateInstances in a scope
where sc->tinst has not been semantic'd, thus breaking the
chaining mechanism.
2013-06-16 18:21:36 +02:00
David Nadlinger
a7882a8ae6 Fix another few issues caused by the upstream v2.063.1 retagging. 2013-06-15 15:08:19 +02:00
David Nadlinger
0e49a57a5f More upstream DMD alignment. 2013-06-15 15:06:57 +02:00
David Nadlinger
66e9427f88 Backport StructLiteralExp::toChars infinite recursion fix.
We absolutely need this for log output/debugging.
2013-06-15 15:04:48 +02:00
David Nadlinger
7874c95cdc Remove unused StructLiteralExp::constType variable. 2013-06-15 15:04:48 +02:00
David Nadlinger
bca5dac669 Fixed ClassReferenceExp codegen, handle self-referential literals. 2013-06-15 15:04:48 +02:00
David Nadlinger
041e8e8b54 Remove LDC-specific .classinfo AST rewrite.
Apart from reducing the diff to upstream DMD, this also fixes a
"cannot interpret" CTFE issue.
2013-06-14 21:49:44 +02:00
David Nadlinger
3035735bc9 FuncDeclaration::canInline diff reduction.
The new arguments to the call in DtoLinkage do not exactly
match what was there before, but have been harmonized with
the other canInline call.
2013-06-14 19:14:19 +02:00
David Nadlinger
349305cd1d Fix array op argument evaluation order regression.
Fixes DMD testcase 'arrayop'.
2013-06-14 17:02:58 +02:00
David Nadlinger
4c788699ae Initial, incomplete ClassReferenceExp::toConstElem implementation.
Allows us to get through a Phobos build without errors.
2013-06-12 20:23:27 +02:00
David Nadlinger
33245282ef More trivial DMD diff reduction. 2013-06-12 20:16:37 +02:00
David Nadlinger
24e3abff34 Unions are always static since Issue 9244. 2013-06-12 20:16:37 +02:00
David Nadlinger
6898d0fa4a Removed last bit of interpret.c diff. 2013-06-12 20:16:37 +02:00
David Nadlinger
ab7ffa9988 Removed obsolete importprot members. 2013-06-12 20:16:37 +02:00
David Nadlinger
292caa1438 Merge the 2.063 frontend. 2013-06-12 20:16:37 +02:00
David Nadlinger
28f39cbdad Remove superfluous Expression::toConstElem overrides.
The error message can be printed by the non-overridden
Expression::toConstElem just as well.
2013-06-12 17:16:31 +02:00
David Nadlinger
9ad88ef713 Remove CastExp::disableOptimization. 2013-06-11 18:14:13 +02:00
David Nadlinger
978c2c1b6a Re-enable SymOffExp and remove associated LLVM-only modifications. 2013-06-11 00:40:48 +02:00
David Nadlinger
f5e276d6a6 Revert meaning of AddExp/MinExp for pointers to DMD default.
It might be worth considering to move the stride multiplication
down to the glue layer in the upstream sources. But assigning a
different meaning to AST nodes was a giant maintenance
liability, especially with regard to CTFE.
2013-06-10 22:49:01 +02:00
David Nadlinger
f7aac5201b Remove unused extra argument to overload checking functions. 2013-06-07 21:23:19 +02:00
David Nadlinger
bf4d679e1a More trivial upstream alignment. 2013-06-07 19:44:04 +02:00
David Nadlinger
c7c1c25f15 DValue: struct->class.
This is in line with an incoming upstream change making all
polymorphic structs classes, and also matches common coding
conventions.
2013-06-07 03:20:39 +02:00
David Nadlinger
005f993982 Merge branch 'release-0.11.0'.
Conflicts:
	gen/llvmhelpers.cpp
2013-06-02 21:53:41 +02:00
David Nadlinger
feeb5e95cc Merge tag 'v0.11.0-beta1' into release-0.11.0
The merge of the MinGW Port updates accidentally didn't make
it into the GitHub version of the release branch, even though
the tag was correct.
2013-06-01 13:53:47 +02:00
David Nadlinger
9dd573d96d Remove what seems to be an ancient LLVM-only issue 314 fix. 2013-05-31 22:42:21 +02:00
David Nadlinger
c0a5145829 Remove DMDV2 to align with 2.062 upstream source. 2013-05-31 22:42:21 +02:00
David Nadlinger
1b4f0c5d4a Remove LDC-only workaround for 2206.
The bug has been fixed in upstream at least since 2.052.
2013-05-31 22:42:21 +02:00
David Nadlinger
7e7af8c920 Prefer Port over #if-switching on the compiler.
The issue might have to be revisited (with proper testing)
for FreeBSD or ARM.
2013-05-31 22:42:21 +02:00