summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVibhav Pant <vibhavp@gmail.com>2022-10-05 01:01:50 +0530
committerVibhav Pant <vibhavp@gmail.com>2022-10-05 01:01:50 +0530
commitd23ed93dcbd97e3081b158f923610ae200706307 (patch)
treec63e75f2a68ba4dbfafdccca642aceb5db84ae15
parentf8b1ce318815159545f807c5e80a720921cfe584 (diff)
downloademacs-feature/jit-improved-type-punning.tar.gz
Add comment explaining gcc_jit_context_new_bitcast usage.feature/jit-improved-type-punning
-rw-r--r--src/comp.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/comp.c b/src/comp.c
index cd09a327a7b..38a6a57f5a8 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -1179,6 +1179,11 @@ emit_coerce (gcc_jit_type *new_type, gcc_jit_rvalue *obj)
gcc_jit_rvalue *tmp = obj;
+ /* `gcc_jit_context_new_bitcast` requires that the types being converted
+ between have the same layout and as such, doesn't allow converting
+ between an arbitrarily sized integer/boolean and a pointer. Casting it
+ to a uintptr/void* is still necessary, to ensure that it can be bitcast
+ into a (void *)/uintptr respectively. */
if (old_is_ptr != new_is_ptr)
{
if (old_is_ptr)