Commit graph

72 commits

Author SHA1 Message Date
Martin Kinkelin
3305549796 Get rid of cycles in DtoType()
Fixes #4734.
2024-08-18 19:34:28 +02:00
Martin Kinkelin
87b22436e4 Fix function pointers/delegates on Harvard architectures
Resolves issue #4432 by setting the address space of such IR pointers.
2023-08-05 12:21:50 +02:00
Martin Kinkelin
9ce57807c0 Drop support for LLVM 9 and LLVM 10 2023-07-29 01:12:43 +02:00
Martin Kinkelin
369cfd13ce Adapt to TY enum class 2021-09-07 16:51:19 +02:00
Martin Kinkelin
1814c177b4 Move target real selection from ir/irtype.cpp to gen/target.cpp
Long overdue, and now required since initializing `Target` before
`Type`.
2021-05-31 03:13:57 +02:00
Martin Kinkelin
44daef934a Add support for 'noreturn' type
It's apparently already in the AST, e.g., for core.internal.abort.
2021-02-28 18:57:45 +01:00
Martin Kinkelin
1834e88739 Handle AST quirk wrt. aggregate Types t with stripModifiers(t) != stripModifiers(t.sym.type) 2020-11-13 17:47:56 +01:00
Martin Kinkelin
3f716ff75e Refactoring: Introduce getIrType()
As *the* way to access the IrType associated with a Type via its `ctype`
field. Most importantly, it makes sure all access is redirected to the
*unqualified* type's `ctype`, which allows to get rid of the 'multiple
types' workaround for aggregates in DtoType(). Those were e.g. hit for
`shared struct SpinLock`, where the struct's type includes the `shared`
modifier...
2020-11-13 15:43:18 +01:00
Martin Kinkelin
96b9cde428 Add support for LLVM 11
One major change is the removal of llvm::CallSite, which I've replaced
by llvm::CallBase*.
2020-09-26 01:04:50 +02:00
Martin Kinkelin
f1fb9d50fd Slightly revise iOS additions 2020-01-28 20:45:07 +01:00
Jacob Carlborg
8724546491 Fix wrong size and emulated real for Apple ARM 2020-01-19 20:57:23 +01:00
Martin Kinkelin
e52199469f Upgrade front-end & libs to v2.087.0-beta.1 2019-06-21 15:39:45 +02:00
Martin Kinkelin
4a23399236 Aim for consistent #includes (order + dir prefix)
I surely missed a few.
2018-10-20 16:19:46 +02:00
Martin Kinkelin
7776c4081b Upgrade frontend & libs to v2.083.0-beta.1 2018-10-20 16:19:46 +02:00
joakim-noah
942fd03677 Add Android/x64 support (#2874) 2018-10-13 13:21:44 +02:00
Martin
1fb269f940 Drop support for LLVM < 3.7 2017-07-16 02:18:00 +02:00
Rainer Schuetze
26a4e2bd13 create our own global context, it's been removed from LLVM 2016-04-16 10:02:13 +02:00
Kai Nacke
24adf155ff Revert "Revert "Merge branch 'ltsmaster'""
This reverts commit 1653911600.
2016-03-03 21:12:53 +01:00
Kai Nacke
1653911600 Revert "Merge branch 'ltsmaster'"
This reverts commit dcb781004b, reversing
changes made to 3c6f09faf0.
2016-03-03 13:14:39 +01:00
Kai Nacke
dcb781004b Merge branch 'ltsmaster' 2016-03-03 07:50:17 +01:00
Kai Nacke
4d40ea8fcf AArch64: This platform uses IEEE 128-bit floats.
This adds the missing code paths.
2016-03-01 22:02:29 +01:00
Johan Engelen
acdcc4a8c1 Merge branch 'master' into merge-2.069 2016-02-13 20:12:17 +01:00
Kai Nacke
6ca3d730ae Do not construct Ir-Types twice for the same type.
This is the same as in PR #1269. The Ir-Types may be initialized
twice (due to pointers, forward references etc.).
This commit fixes hopefully all instances of this problem, using
the same approach in each factory function.

This fixes issue #1112.
2016-02-01 21:52:15 +01:00
David Nadlinger
01efbeb5f0 irtype: Structure sarray code the same as for arrays and pointers 2016-01-30 20:19:44 +01:00
David Nadlinger
86468770b3 irtype: Clean up excessive ASCII art delimiters 2016-01-30 19:59:56 +01:00
Kai Nacke
bf31921a87 Do not construct IrTypeSArray twice for same type.
The constructor of IrTypeSArray() calls sarray2llvm(). This function calls
DtoMemType() which may recursively try to construct another IrTypeSArray
for the same type. To prevent this the call to sarray2llvm() is moved
 out
of the constructor into the factory method and an explicit check is added.

This fixes issue #1266.
2016-01-30 16:24:46 +01:00
Johan Engelen
29ce4012af dmd2 --> ddmd. Merge (almost all of) our changes to dmd source into the new D source of dmd 2.069.2.
Also adds the CMake infrastructure to compile and link the D source files.

The build is partially broken:
- A few files in Phobos and druntime do not build
- MSVC build is broken because of unresolved symbols involving reals
2016-01-28 19:03:58 +01:00
David Nadlinger
9df487edff gen/ir: clang-tidy the world 2015-11-02 11:30:40 +02:00
David Nadlinger
44b0f7b615 driver/gen/ir: clang-format the world
This uses the LLVM style, which makes sense for sharing code
with other LLVM projects. The DMD code we use will soon all
be in D anyway.
2015-11-02 00:28:01 +02:00
Martin
60d676e2a1 Drop support for LLVM < 3.5
This allows to clean up the code a little.
2015-10-30 22:24:05 +01:00
Martin
b13565c17e Refactor common i1ToI8(voidToI8(DtoType(...))) code occurrences 2015-10-03 22:58:00 +02:00
kai
d652ef76a1 Enable trivial code path for 128bit integer.
They are not yet enabled.
2015-04-06 17:30:04 +02:00
kai
7fdaae450a [WIP] Set real == double on Win64 MSVC.
The MS C Runtime does not support 80bit reals. Drop support in D, too.
2014-10-16 07:23:02 +02:00
kai
c44c0d6884 Fix compile error introduced with last commit 2014-10-15 13:12:25 +02:00
kai
320fdce763 Really drop support for doubledouble on PPC32/64.
The IR was still using the doubledouble type for real on PPC32/64.
2014-10-15 07:46:15 +02:00
Alexey Prokhin
4e2d45a409 Move irFty fields to backend ir classes 2014-10-05 16:55:22 +04:00
Alexey Prokhin
66a392a5c2 Rename Type::irtype to ctype for consistency with dmd and gdc 2014-10-05 16:55:12 +04:00
Alexey Prokhin
8fea7484fe Don't use TypeFunction::funcdecl as it is about to be removed 2013-10-05 19:04:18 +04:00
David Nadlinger
848dee32d4 Store bools as i8.
I really hope we can refactor this to use a less leaky
abstraction later – it should at least be possible to merge
voidToI8 and i1ToI8.
2013-06-07 03:20:54 +02:00
kai
1e4a8fffc2 Remove DMDV1 and DMDV2. 2013-03-06 10:20:24 +01:00
David Nadlinger
5f3ba41574 Removed redundant global.params.cpu field.
Now that we have global.params.targetTriple, the information
is only duplicated.
2013-02-07 17:36:54 +01:00
David Nadlinger
8ff3a8060a Use llvm_unreachable instead of assert(0).
Also removed some unused functions.
2013-02-07 03:38:15 +01:00
kai
bfc23acf30 Merge branch 'master' into merge-2.061-2 2013-02-02 15:27:51 +01:00
kai
045d50deb5 Replace SmallVector/vector with C array for type lists 2013-02-02 15:01:13 +01:00
David Nadlinger
30caa4bfe6 Merge branch 'master' into merge-2.061-2 2013-01-12 01:27:02 +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
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
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
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
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