Timm Baeder
e86b68ff56
[clang][bytecode] Add support for typeid pointers ( #121251 )
...
Add it as another kind of pointer, saving both a `Type*` for the result
of the typeid() expression as well as one for the type of the typeid
expression.
2024-12-28 14:07:01 +01:00
Timm Baeder
56fd46edb3
[clang][bytecode] Remove a bitcast nullptr_t special case ( #120188 )
...
We still need to check the input pointer, so let this go through
BitCastPrim.
2024-12-17 13:23:14 +01:00
Timm Baeder
44be794658
[clang][bytecode] Not all null pointers are 0 ( #118601 )
...
Get the Value from the ASTContext instead.
2024-12-05 06:03:50 +01:00
Timm Baeder
2588b8be56
[clang][bytecode] Implement bitcasts to composite types ( #114776 )
...
Only fixed-size, non-bitfield integral fields for now.
2024-11-04 15:10:10 +01:00
Timm Baeder
ef2a104c94
[clang][bytecode] Start implementing __builtin_bit_cast ( #112126 )
...
This is a subset of #68288 , with hopefully narrower scope. It does not
support bitcasting to non-integral types yet.
Bitfields are supported, but only if they result in a full byte-sized
final buffer. It does not support casting from null-pointers yet or
casting from indeterminate bits.
The tests are from #68288 and partially from #74775 .
The `BitcastBuffer` struct is currently always working in single bits,
but I plan to (try to) optimize this for the common full-byte case.
2024-10-31 18:09:40 +01:00
Timm Baeder
159f253017
[clang][bytecode] Diagnose invalid declrefs differently if we've... ( #113140 )
...
... tried their initializer already. In that case, diagnose the
non-const initializer instead of the reference to a non-constexpr
variable later. This is used in a lot of openmp tests.
2024-10-21 12:07:09 +02:00
Timm Baeder
3eaf4a9d1a
[clang][bytecode] Check for memory leaks after destroying global scope ( #112868 )
...
The global scope we create when evaluating expressions might free some
of the dynamic memory allocations, so we can't check for memory leaks
before destroying it.
2024-10-18 13:03:13 +02:00
Timm Baeder
f93258e4ac
[clang][bytecode] Diagnose class-specific operator delete calls ( #111700 )
2024-10-10 08:40:14 +02:00
Timm Baeder
fed8695bb8
[clang][bytecode] Emit better diagnostic for invalid shufflevector index ( #111643 )
2024-10-09 09:56:37 +02:00
Timm Baeder
6f04e65c3c
[clang][bytecode] Implement fixed-point shifts ( #110429 )
2024-09-29 20:56:17 +02:00
Timm Baeder
5c811ccc4d
[clang][bytecode] Implement more binary operators for fixed point types ( #110423 )
2024-09-29 17:36:17 +02:00
Timm Baeder
95ce78b742
[clang][bytecode] Implement fixed-point-to-int casts ( #110417 )
...
And some cleanups around overflow handling.
2024-09-29 13:31:44 +02:00
Timm Baeder
c2a37e41b9
[clang][bytecode] Implement fixed point casts ( #110409 )
2024-09-29 08:58:21 +02:00
Timm Baeder
defead4d2d
[clang][bytecode] Implement fixed-point add ( #110405 )
2024-09-29 07:13:17 +02:00
Timm Baeder
3a5b9da115
[clang][bytecode] Implement fixed-point-to-float casts ( #110369 )
2024-09-28 19:11:49 +02:00
Timm Baeder
6cbd8a3094
[clang][bytecode] Implement floating-to-fixed-point casts ( #110361 )
2024-09-28 17:24:28 +02:00
Timm Baeder
641b4d5370
[clang][bytecode] Implement integral-to-fixed-point casts ( #110350 )
2024-09-28 13:10:23 +02:00
Timm Baeder
581c015ed0
[clang][bytecode] Implement fixed point negation ( #110237 )
2024-09-27 13:29:14 +02:00
Timm Baeder
048bc67276
[clang][bytecode] Start implementing fixed point types ( #110216 )
...
Add the primitive type and implement to-bool casts.
2024-09-27 11:32:43 +02:00
Timm Baeder
c712ab829b
[clang][bytecode] Implement placement-new ( #107033 )
...
If we have a placement-new destination already, use that instead of
allocating a new one.
Tests are partially based on
`test/SemaCXX/cxx2c-constexpr-placement-new.cpp`.
2024-09-23 13:26:49 +02:00
Timm Baeder
78cf9b830c
[clang][bytecode] Implement using operator new/operator delete ( #107679 )
...
Reuse the __builtin_operator_{new,delete} implementations.
2024-09-07 12:17:54 +02:00
Timm Baeder
83fea8b809
[clang][bytecode] Allow continuing when discarded MemberExpr Base fails ( #107231 )
...
We don't need the value in this case, since we're discarding it anyway.
Allow continuing the interpretation but note the side effect.
2024-09-07 09:33:27 +02:00
Timm Baeder
0f5f440f24
[clang][bytecode] Pass FPOptions to floating point ops ( #107063 )
...
So we don't have to retrieve them from the InterpFrame, which is slow.
2024-09-03 14:24:11 +02:00
Timm Baeder
6f81c878ec
[clang][bytecode][NFC] Implement MemberPointer::toDiagnosticString() ( #106825 )
2024-08-31 07:26:02 +02:00
Timm Baeder
360e4abfc8
[clang][bytecode] Diagnose comparisons with literals ( #106734 )
...
This requires adding a new opcode for PointerToBoolean casts, since we
otherwise emit too many diagnostics. But that fixes an older problem
when casting weak pointers to bool.
2024-08-31 06:24:36 +02:00
Timm Baeder
b9c4c4ccf9
[clang][bytecode] Fix 'if consteval' in non-constant contexts ( #104707 )
...
The previous code made this a compile-time decision but it's not.
2024-08-22 19:06:09 +02:00
Timm Bäder
d082f1f37d
[clang][bytecode] Only booleans can be inverted
...
No need to have the Inv() function be templated.
2024-08-18 16:02:32 +02:00
Timm Baeder
a07aba5d44
[clang] Rename all AST/Interp stuff to AST/ByteCode ( #104552 )
...
"Interp" clashes with the clang interpreter and people often confuse
this.
2024-08-16 17:13:12 +02:00