Commit Graph
3055 Commits
Author SHA1 Message Date
David Nadlinger f02e4b1925 Fix overly conservative inlining prediction.
A "statementsToo" flag was added to DMD, which disables inlining
of pretty much any functions that actually return a value – set it
to false for our purposes.

The other parts of the diff are just cosmetic.
2013-01-12 01:23:55 +01:00
kai 6ddb524b91 More LLVM 3.3 changes 2013-01-11 22:46:36 +01:00
David Nadlinger b99b78558b Hack to make nested struct .init results an rvalue.
The code still needs closer scrunity, as the 'nested' test
from the DMD testsuite doesn't fully pass yet.
2013-01-11 21:34:45 +01:00
kai a11459bc31 "The Great Renaming" continues.
More changes to match the renamed files of LLVM 3.3.
2013-01-06 17:17:30 +01:00
David Nadlinger 7a4c378788 Correctly set 'outer' reference of nested inner classes.
Fixes DMD testcase 'test11'.
2013-01-04 16:48:10 +01:00
David Nadlinger 43ca6a9581 LDMD: Fix -deps generation. 2013-01-04 16:48:10 +01:00
David Nadlinger 859177fe3d Do not unnecessarily call postblit after rvalue array initializers.
Fixes DMD testcases 'sdtor' and 'structlit'.
2013-01-04 16:48:10 +01:00
David Nadlinger bcd8f26b26 Removed completely wrong postblit invocation.
This piece of code was invoking the postblit on the _source_
of the copy operation.
2013-01-04 16:48:10 +01:00
David Nadlinger 1a3fc9f97f Fix break out of non-nothrow range foreach.
Fixes DMD testcase 'test9068'.
2013-01-04 16:48:10 +01:00
kai 82a3216619 Simplify code.
The code to generate a constant string is too complex. Just use the
method provided by LLVM.
The complexity was introduced during a LLVM refactoring....
2013-01-04 14:35:24 +01:00
David Nadlinger c3d517e17f Correctly handle ref variables in an outer frame.
Fixes DMD testcase 'testcontracts'.
2013-01-04 07:31:18 +01:00
David Nadlinger 0508acf10b Cleanup: Remove redundant piece of code.
This case is already handled in DtoCreateNestedContextType.
2013-01-04 07:31:18 +01:00
David Nadlinger a797e686a0 Updated hidden method error message according to DMD issue 6373.
Fixes DMD testcase 'diag6373'.
2013-01-04 07:31:17 +01:00
David Nadlinger 86a6a6ba05 Use DMD's C++ name mangling functionality.
Likely wrong for MinGW/MSVC.

Fixes DMD testcase 'test7030'.
2013-01-04 06:22:57 +01:00
David Nadlinger eb56e934a5 Restore original Parameter::ForeachDg signature.
Having two functions is not pretty, but shorter than messing
around with a custom context object, and much, MUCH better than
requiring a lot of changes to the rest of the code base.
2013-01-04 06:22:57 +01:00
David Nadlinger 55fb4798a7 Added workaround for DMD accepts-invalid regression 9268. 2013-01-04 06:22:57 +01:00
David Nadlinger b3f59134c1 Adapt to new DMD lambda inference mechanism.
Rewriting types this late is a questionable design and prone
to break non-DMD client code; this should be discussed
again with Kenji.
2013-01-04 06:22:57 +01:00
David Nadlinger 26217eabb2 Remove LDC-specific callable literal kind inference hack. 2013-01-04 06:22:57 +01:00
David Nadlinger 5c518a16ec Merged 2.061 frontend. 2013-01-04 06:22:53 +01:00
David Nadlinger 326aedd0e4 Align AlignDeclaration constructor signature to upstream version.
If there still are error messages benefiting from the added
location information, the change should be upstreamed, as usual.
2013-01-04 01:50:51 +01:00
David Nadlinger d694e37f4a Fix test suite builds: backport copyright year change. 2013-01-04 01:43:56 +01:00
David Nadlinger 2f8705f4d6 Don't pass file name to executable on '-run'. 2013-01-04 01:42:01 +01:00
David Nadlinger 615a2b5839 LDMD: Fixed -run parameter parsing. 2013-01-03 21:12:56 +01:00
kai 272e7b7a55 Follow "The Great Renaming" in LLVM 3.3
This time VMCore was renamed to IR. Several top level include
files were moved to new subfolder IR.
2013-01-03 08:52:23 +01:00
David Nadlinger 1caf4c9c26 Handle plain AA type <-> AA struct return type mismatch.
GitHub: Fixes #214.
2012-12-31 12:10:46 +01:00
David Nadlinger 08708917bc D1 build fix.
The workaround could later be merged to D1 if the same problem
starts to appear there as well.
2012-12-31 06:27:11 +01:00
David Nadlinger dc7e328356 Merge druntime TypeInfo declaration fix.
GitHub: Fixes #250.
2012-12-31 05:57:05 +01:00
David Nadlinger 39e3e3a678 Replace template symbol module fix with more localized hack.
This reverts commit c4adbedcc, which would have fixed the
problem at its roots, but caused strange template function
attribute inference failures in D-YAML, presumably due to
the different order of semantic3 execution on the templates.
2012-12-31 05:46:29 +01:00
kai 2898e5cac3 Add support for PPC 128bit doubledouble type.
On a PowerPC target the datatype real is mapped to PPC 128bit doubledouble type.
Please note that this yet does not work if you cross compile from a different
architecture.
2012-12-30 17:18:36 +01:00
kai ce47e5a083 Change in core.stdc.stdarg for PPC64 2012-12-30 17:18:11 +01:00
kai e684d10ac7 Cleanup of complex type handling.
- replace if .. else cascades with swicth
- replace assert(0) with llvm_unreachable as default case
- add some whitespaces in parameter lists
2012-12-30 14:56:53 +01:00
kai a3975b7f47 Replace llvm::Function.getFnAttributes with llvm::Function.getAttributes.
This is a recent change in LLVM 3.3.
2012-12-30 14:27:51 +01:00
David Nadlinger c4adbedcc6 Emit template symbols into correct module during many-at-once compilation.
Previously, it could happen that regular symbols referenced
only as part of a template instance (e.g. a lambda passed as
an alias parameter) were not even emitted in the wrong module,
but not at all because mustDefineSymbol would return false to
them when being analyzed during codegen of the wrong module.

This issue might affect incremental compilation with DMD as
well, and the fix should be discussed with the upstream devs.

GitHub: Fixes #249.
2012-12-30 02:37:54 +01:00
David Nadlinger 87e72d27b3 Cleanup: Added missing include, killed superfluous newline in debug log. 2012-12-30 02:36:54 +01:00
kai b571d7a6c5 Add core.stdc.stdarg support for PPC64 2012-12-29 02:47:54 +01:00
kai 14b48bdca4 Add some comments to ABI interface 2012-12-28 20:41:05 +01:00
David Nadlinger f1f0486b6e Implement ordered delegate comparisons.
GitHub: Fixes #256.
2012-12-28 18:08:49 +01:00
David Nadlinger 33093a7403 Factor out TOK to icmp predicate conversion into helper method. 2012-12-28 18:08:49 +01:00
kai 7b5055b2a2 Started to add support for PPC64 in druntime 2012-12-28 05:50:50 +01:00
David Nadlinger b25b46f65b Merge test case update. 2012-12-27 23:28:01 +01:00
David Nadlinger eac742b9f7 Don't create IrType twice for aggregate arrays with forward references.
GitHub: Fixes #257.
2012-12-27 23:22:46 +01:00
kai e8a084f9ae Add palignr and pshufb to x86_32 2012-12-26 21:27:19 +01:00
kai 7ccd510c11 Add missing forward declaration 2012-12-25 16:47:37 +01:00
David Nadlinger 48c251179a Merge pull request #255 from foutrelis/master
Fix llvm/IRBuilder.h include when using LLVM 3.2
2012-12-24 20:11:12 -08:00
Evangelos Foutras 984207e348 Fix llvm/IRBuilder.h include when using LLVM 3.2 2012-12-25 04:58:25 +02:00
David Nadlinger 8880645bf6 Typo fix.
Turns out I still had USE_METADATA=OFF in the CMake cache when
testing the previous commit.
2012-12-24 02:22:40 +01:00
David Nadlinger a0971b7c4b Use more portable integer log from LLVM. 2012-12-24 02:05:06 +01:00
David Nadlinger 8094e3c21b dgc2stack: Added size limit for stack promotion. 2012-12-23 21:20:55 +01:00
Kai Nacke 1600aa95e5 Merge pull request #161 from redstar/ctordtor
Add pragma to install function as global ctor or dtor.
2012-12-22 13:09:49 -08:00
kai 4ea7e8dbf8 Add pragma to install function as global C runtime ctor or dtor.
DMD has the obscure functionality to install functions starting with
_STI_ as global ctors and funtions starting with _STD_ as global
dtors. IMHO a pragma is a better way to specify the behaviour.

This commit adds pragma(LDC_global_crt_ctor) and
pragma(LDC_global_crt_dtor). If the pragma is specified on a function
or static method then an entry is made in the corresponding list. E.g.
in monitor_.d:

    extern (C) {
        #pragma(LDC_global_crt_ctor)
        void _STI_monitor_staticctor()
        {
            // ...
        }
    }

This works on Linux without problems. On Windows with MS C Runtime
ctors work always but dtors are invoked only if linked against the
static C runtime. Dtors on Windows require at least LLVM 3.2.
2012-12-22 21:18:37 +01:00