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