Martin Kinkelin
4c74f64a9c
Get rid of D type param in DtoConstSlice()
2024-05-20 17:30:01 +02:00
Martin Kinkelin
7fa7f35b2a
Skip some more superfluous bitcasts NOT using the DtoBitCast() helper
2024-05-20 17:29:55 +02:00
Martin Kinkelin
d140f2a283
Skip superfluous IR pointer bitcasts, now that they are always opaque
2024-05-20 16:45:09 +02:00
liushuyu
b8a96faf92
tree-wide: port LDC to LLVM 18
2024-03-26 14:45:35 -06:00
Martin Kinkelin
bb2dec2f87
Adapt to free arrayOf(Type*) function
2024-03-03 22:12:16 +01:00
Martin Kinkelin
9041c0bf67
Adapt to free functions in dmd
C++ namespace now
2024-03-03 19:14:00 +01:00
Martin Kinkelin
a3aadfcce8
Adapt to new multi-dimensional array allocation lowering
...
Fixes runnable/test28.d.
2024-01-19 19:42:17 +01:00
Martin Kinkelin
ae52da1bfa
Adapt to Loc::linnum and Loc::charnum now being functions
2023-08-26 15:56:02 +02:00
Martin Kinkelin
c8857e8cb8
Fix some LLVM 16 deprecations wrt. DataLayout::getABITypeAlignment() and llvm::makeArrayRef()
2023-08-13 19:10:57 +02:00
Martin Kinkelin
67885a8ef7
Adapt to new _d_arraycatnTX template lowering
2023-07-16 13:46:34 +02:00
Martin Kinkelin
a6dc3fa73a
Adapt to new _d_arraysetlengthT template lowering
2023-07-16 13:43:00 +02:00
Martin Kinkelin
1e9f3a7be7
Merge remote-tracking branch 'origin/master' into pre-monorepo
...
Conflicts:
runtime/druntime
2022-11-19 19:08:06 +01:00
Johan Engelen
f213aa7f65
Opaque pointers: fix type comparison based on pointers for array copy. (don't compare pointers, because with opaque pointers they are always the same)
2022-11-15 01:48:22 +01:00
Martin Kinkelin
b81c2b5510
Adapt to new array-append frontend lowerings
2022-09-15 21:00:53 +02:00
Martin Kinkelin
6998886e89
Adapt to removed _d_array[set]ctor druntime hooks (replaced by templated lowerings)
2022-09-15 19:00:21 +02:00
Nicholas Wilson
af51b700be
Rename DtoAggrPaint
to DtoSlicePaint
( #4174 )
...
It only does two elements and is exclusively used for slices
2022-09-15 20:44:28 +08:00
Nicholas Wilson
6617daa45b
Fix issue 4134 ( #4136 )
2022-09-15 18:00:49 +08:00
Nicholas Wilson
a94262f509
Remove getContainedType
from DtoArrayAssign
( #4165 )
2022-09-14 18:58:25 +08:00
Nicholas Wilson
4f35ff0b78
Remove getContainedType
from callMemcmp
( #4160 )
2022-09-14 14:20:59 +08:00
Nicholas Wilson
c228ef51eb
Remove getContainedType
from DtoSlice
( #4161 )
2022-09-13 20:18:35 +00:00
Nicholas Wilson
838146be71
Remove getContainedType
from DtoMemSetZero
( #4157 )
2022-09-13 21:39:05 +08:00
Nicholas Wilson
f1a3ed5ede
Remove getContainedType
from DtoSetArray
( #4144 )
2022-09-13 20:12:16 +08:00
Nicholas Wilson
ccd24cc09a
Use typed gep in arrays.cpp
( #4098 )
2022-09-03 05:32:40 +08:00
Nicholas Wilson
dc5caeb19d
Use typed gep in arrays.cpp
( #4093 )
2022-09-01 20:09:35 +08:00
Nicholas Wilson
f2155c6dd9
Use type gep in initializeArrayLiteral
( #4092 )
2022-09-01 17:14:57 +08:00
Nicholas Wilson
bd3d562d2a
Use typed gep in arrays.cpp
( #4083 )
2022-08-31 13:54:32 +08:00
Nicholas Wilson
beddcfd3ad
Use typed gep in arrays.cpp
( #4075 )
2022-08-31 11:50:41 +08:00
Nicholas Wilson
37aca9c940
Use typed load in arrays.cpp
( #4055 )
2022-08-29 10:24:05 +08:00
Nicholas Wilson
308d39cea0
Use typed load in arrays.cpp
( #4064 )
2022-08-28 17:24:35 +08:00
Nicholas Wilson
6daf215b3c
Remove getPointeeType
from DtoSetArrayToNull
( #4032 )
2022-08-21 13:15:30 +08:00
Nicholas Wilson
842593f75b
Remove use of getPointerElementType
in gen/arrays.cpp
( #4021 )
2022-08-21 10:39:00 +08:00
Martin Kinkelin
be20833b22
codegen: Support {Not,Logical,Identity,Cmp}Exp with non-bool type (for importC AST)
...
Fixing failing LDC assertions.
2022-04-30 23:46:47 +02:00
Martin Kinkelin
4b1f5516fd
Pass isCfile parameter for all defaultInit() calls, for some extra importC zero-init
...
Fixes dmd-testsuite's runnable/test22994.c.
2022-04-30 19:54:20 +02:00
Martin Kinkelin
8527b3f9c8
Work around llvm::PointerType::getElementType() being deprecated in LLVM 14
2022-03-30 19:53:47 +02:00
Martin Kinkelin
4bd8dcd91b
Adapt to new TOK and EXP enum classes
2022-02-16 20:52:07 +01:00
Martin Kinkelin
e8997308f9
Always specify a pointee type for llvm::ConstantExpr::getGetElementPtr()
...
As required by LLVM 13.
2021-10-11 19:21:37 +02:00
Martin Kinkelin
f4ea32e496
ImportC: No bounds checks for 'incomplete' static arrays
...
Fixes dmd-testsuite's runnable/test22326.c.
2021-09-25 18:59:17 +02:00
Martin Kinkelin
fab82436dd
Use new druntime hooks _d_arraybounds_{slice,index} for more informative RangeErrors
...
Fixing dmd-testsuite's runnable/testbounds.d.
2021-09-09 17:37:38 +02:00
Martin Kinkelin
369cfd13ce
Adapt to TY enum class
2021-09-07 16:51:19 +02:00
Martin Kinkelin
d3574b9835
DtoTypeInfoOf(): Make Loc param mandatory and move to 1st position
2020-12-13 15:15:37 +01:00
Martin Kinkelin
a9aafac862
Glue layer: Make all mutable Loc &
params const
2020-12-13 15:01:19 +01:00
DaveP1776
3f9d05ac16
Fix missing location information for error reporting of TypeInfo in betterC
...
This fixes an issue where any instantiation of TypeInfo in the final
output would lead to a cryptic error with no file or line information.
This change brings ldc in line with dmd's reporting of the same error,
which at least gives file and line information to discover the problem.
2020-12-12 22:41:21 -05: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
69269f3bd9
Refactor IRScope handling
...
Replace the stack of IRScopes, each with its own IRBuilder, by directly
tampering with the state of a single IRBuilder.
This seems like the most feasible way to account for a breaking change
in LLVM 11, disallowing IRBuilder from being copied.
2020-09-26 01:04:50 +02:00
Martin Kinkelin
7be38fd220
Try to use memcmp for (in)equality of non-mutable static arrays and mutable slices ( #3401 )
...
Fixes #3400 . The frontend pre-casts the static array operand to the
slice type for cases like `bool[4] == bool[]`, but that's not possible
in case the static array is non-mutable but the slice type is mutable.
So check the element types for equivalence, not the array types, as
static arrays and slices are NOT equivalent.
2020-04-17 22:09:55 +02:00
Martin Kinkelin
26673c174f
Refactoring: Replace Expression::op check followed by static cast to Expression::is<ExpressionType> ( #3141 )
...
This may negatively impact performance, as the (final, i.e.,
non-virtual) Expression::is... family is implemented in D and not
available inline in the C++ headers.
2020-01-15 12:54:05 +01:00
Martin Kinkelin
4ac7f0554b
Adapt to frontend refactorings
2019-12-22 16:29:45 +01:00
Martin Kinkelin
8fd69da8fb
Make all DtoGEP helpers use implicit inbounds
...
Single functional change: always emit inbounds when computing the base
pointer of a SliceExp.
2019-09-10 22:36:25 +02:00
Martin Kinkelin
e52199469f
Upgrade front-end & libs to v2.087.0-beta.1
2019-06-21 15:39:45 +02:00
Martin Kinkelin
9469c6b5b8
Fix array casts with constant source lengths
...
The `__ArrayCast` lowering isn't (always?) done when casting a static
array to a slice with different element size.
So exploit constant source lengths and compute the target length at
compile-time.
This fixes compilable/ldc_github_421.d - a float[16] can be cast to a
float4[] with constant length 4.
2019-04-25 00:57:46 +02:00