Commit Graph
2682 Commits
Author SHA1 Message Date
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
David Nadlinger 71e8623a89 Merge pull request #254 from redstar/clang
Cleanup: 2 more clang warning fixes.
2012-12-22 11:13:54 -08:00
kai fd0021c6c2 Cleanup: 2 more clang warning fixes. 2012-12-22 16:59:20 +01:00
kai 1ba0681197 2nd attempt to fix issue #253. 2012-12-21 22:45:09 +01:00
kai df4a245040 Resolve mismatch between object.di and typinfo.cpp on 64bit non-x86 systems.
On Windows x86_64, class TypeInfo_Struct contains 2 additional fields
(m_arg1/m_arg2) which are used for the X86_64 System V ABI varargs
implementation. They are not present on any other os.

This commit changes an assertion which did not check for the os and therefore
broke on 64bit non-86 systems like ppc64.
2012-12-21 22:05:28 +01:00
kai 5f37ae30cf LLVM 3.3: class Attributes is renamed to Attribute.
Some other renamings took place in "llvm/Attributes.h" but only this causes
compile errors in LDC.
Also uses new location of "llvm/IRBuilder.h".
2012-12-21 17:32:17 +01:00
David Nadlinger 9d9f827efb Set irtype for underlying function type when building delegate types.
This fixes the problem of arg_nest disappearing when DtoType
is called on such types, e.g. as part of metadata generation.
2012-12-21 00:32:07 +01:00
David Nadlinger 7be9c5c5c7 dgc2stack: LLVM 3.2 compatibility. 2012-12-20 23:52:25 +01:00
David Nadlinger 8913898b5e dgc2stack: Demote LLVM "tail" calls when promoting an allocation.
Referencing alloca'd memory in tail calls is invalid IR. This was
not caught by the verifier, but produced misoptimizations due to
wrong alias analysis results.
2012-12-20 23:52:25 +01:00
David Nadlinger 4da1427c19 Enable USE_METADATA by default. 2012-12-20 23:52:25 +01:00
David Nadlinger bc541a4421 Added D2/druntime support to gc2stack. 2012-12-20 23:52:25 +01:00
David Nadlinger ebbbfdd4ac Metadata/gc2stack compile fixes to accomodate LLVM API changes. 2012-12-20 23:52:24 +01:00
David Nadlinger a3a511ca55 Refactored IrType construction to use static get() method.
This also allows us to enable the assert in IrType::IrType.

Unfortunately, this is mostly a "peace of mind" commit, there
doesn't seem to have been a bug actually caused by the transitory
duplicate IrTypePointer/IrTypeStruct instances.

The remaining xyz2llvm static methods are not exactly pretty,
they should probably just be folded into get.
2012-12-20 23:52:09 +01:00
David Nadlinger 464c695814 Renamed IrType::get/IrType::getD, treat classes as the special case they are. 2012-12-20 23:52:09 +01:00
David Nadlinger aa4543465d Actually run DMD test suite in 32 bit mode on x86_64 multilib builds.
Yet another regression gone unnoticed because CMake functions
silently accept extra arguments.
2012-12-20 03:57:04 +01:00
David Nadlinger 4804cbcdbb Cleanup: Removed unused variable. 2012-12-20 03:29:06 +01:00
David Nadlinger 89809fdde3 Cleanup: Silence another "maybe-undefined" warning.
Also makes the assert in line 775 actually work.
2012-12-20 02:10:32 +01:00
David Nadlinger 0be65aa49b Add back line accidentally removed in 289bb57a. 2012-12-20 02:07:11 +01:00
David Nadlinger 06f9efd763 Enable -Wextra by default. 2012-12-20 01:21:10 +01:00
David Nadlinger 4118cddd1f Cleanup: GCC warning fixes. 2012-12-20 01:21:10 +01:00
David Nadlinger ab357a41c7 Removed useless debug log messages. 2012-12-20 01:21:10 +01:00
David Nadlinger 59a4a02e49 Cleanup: Avoid signed/unsigned comparisons.
The ones ones left are for DMD-defined constants.
2012-12-20 01:21:09 +01:00
David Nadlinger 189115fa98 Cleanup: Move definitions for irfuncty.h to new irfuncty.cpp. 2012-12-20 01:03:01 +01:00
David Nadlinger 0efa499b22 Cleanup: Actually use forward-declared types. 2012-12-20 01:00:59 +01:00