public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug jit/95498] New: unhandled conversion
@ 2020-06-03 13:14 bouanto at zoho dot com
  2020-06-06 12:42 ` [Bug jit/95498] " bouanto at zoho dot com
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: bouanto at zoho dot com @ 2020-06-03 13:14 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95498

            Bug ID: 95498
           Summary: unhandled conversion
           Product: gcc
           Version: 10.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: jit
          Assignee: dmalcolm at gcc dot gnu.org
          Reporter: bouanto at zoho dot com
  Target Milestone: ---

Created attachment 48667
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48667&action=edit
Reproducer for the bug

Hi.
The attached reproducer fails with the following error:

libgccjit.so: error: unhandled conversion
input expression:
 <integer_cst 0x7fd8f5909f60 type <integer_type 0x7fd8f591e5e8> constant
visited 1>
requested type:
 <integer_type 0x7fd8f5a56d20 SI
    size <integer_cst 0x7fd8f5909df8 type <integer_type 0x7fd8f591e0a8
bitsizetype> constant 32>
    unit-size <integer_cst 0x7fd8f5909e10 type <integer_type 0x7fd8f591e000
sizetype> constant 4>
    align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fd8f5a56d20 precision:32 min <integer_cst 0x7fd8f5a48468 -2147483648> max
<integer_cst 0x7fd8f5a61c18 2147483647>>
libgccjit.so: error: unhandled conversion
input expression:
 <rshift_expr 0x7fd8f5a58eb0
    type <integer_type 0x7fd8f591e888 public DI
        size <integer_cst 0x7fd8f5909bb8 constant 64>
        unit-size <integer_cst 0x7fd8f5909bd0 constant 8>
        align:64 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fd8f591e888 precision:64 min <integer_cst 0x7fd8f5909e70
-9223372036854775808> max <integer_cst 0x7fd8f5909ea0 9223372036854775807>
        pointer_to_this <pointer_type 0x7fd8f592edc8>>
    visited
    arg:0 <nop_expr 0x7fd8f5a41ca0 type <integer_type 0x7fd8f591e888>
        visited
        arg:0 <var_decl 0x7fd8f5a5c2d0 returnValue type <integer_type
0x7fd8f591e930>
            visited unsigned DI (null):0:0 size <integer_cst 0x7fd8f5909bb8 64>
unit-size <integer_cst 0x7fd8f5909bd0 8>
            align:64 warn_if_not_align:0 context <function_decl 0x7fd8f5947500
_ZN17compiler_builtins3int4udiv12__udivmoddi417h85654ff61d7f0603E> chain
<var_decl 0x7fd8f5a5c240 undefined>>>
    arg:1 <bit_and_expr 0x7fd8f5a58e88 type <integer_type 0x7fd8f591e888>
        readonly constant visited
        arg:0 <integer_cst 0x7fd8f5a5b6c0 constant visited 63> arg:1
<integer_cst 0x7fd8f5a5b6c0 63>>>
requested type:
 <integer_type 0x7fd8f5a56d20 SI
    size <integer_cst 0x7fd8f5909df8 type <integer_type 0x7fd8f591e0a8
bitsizetype> constant 32>
    unit-size <integer_cst 0x7fd8f5909e10 type <integer_type 0x7fd8f591e000
sizetype> constant 4>
    align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fd8f5a56d20 precision:32 min <integer_cst 0x7fd8f5a48468 -2147483648> max
<integer_cst 0x7fd8f5a61c18 2147483647>>
libgccjit.so: error: unhandled conversion
input expression:
 <error_mark 0x7fd8f5909ba0>
requested type:
 <integer_type 0x7fd8f591e690 public unsigned SI
    size <integer_cst 0x7fd8f5909df8 type <integer_type 0x7fd8f591e0a8
bitsizetype> constant 32>
    unit-size <integer_cst 0x7fd8f5909e10 type <integer_type 0x7fd8f591e000
sizetype> constant 4>
    align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fd8f591e690 precision:32 min <integer_cst 0x7fd8f5909e28 0> max <integer_cst
0x7fd8f5909de0 4294967295>
    pointer_to_this <pointer_type 0x7fd8f59347e0>>
gcc_jit_result_release: NULL result

Sorry for the size of the reproducer. If you need to, I can try making it
smaller.

Thanks to fix this bug.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug jit/95498] unhandled conversion
  2020-06-03 13:14 [Bug jit/95498] New: unhandled conversion bouanto at zoho dot com
@ 2020-06-06 12:42 ` bouanto at zoho dot com
  2020-06-06 17:49 ` dmalcolm at gcc dot gnu.org
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: bouanto at zoho dot com @ 2020-06-06 12:42 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95498

--- Comment #1 from bouanto at zoho dot com ---
I'm trying to create a smaller reproducer by calling
gcc_jit_context_dump_to_file, but I don't know where to stop in gdb in order to
get the source info.

How did you do it in https://gcc.gnu.org/bugzilla//show_bug.cgi?id=95521 ?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug jit/95498] unhandled conversion
  2020-06-03 13:14 [Bug jit/95498] New: unhandled conversion bouanto at zoho dot com
  2020-06-06 12:42 ` [Bug jit/95498] " bouanto at zoho dot com
@ 2020-06-06 17:49 ` dmalcolm at gcc dot gnu.org
  2020-06-06 18:07 ` bouanto at zoho dot com
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: dmalcolm at gcc dot gnu.org @ 2020-06-06 17:49 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95498

--- Comment #2 from David Malcolm <dmalcolm at gcc dot gnu.org> ---
Try putting a breakpoint on add_error (there are a few classes with add_error
methods; a sufficiently smart gdb ought to put the breakpoint on all of them).

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug jit/95498] unhandled conversion
  2020-06-03 13:14 [Bug jit/95498] New: unhandled conversion bouanto at zoho dot com
  2020-06-06 12:42 ` [Bug jit/95498] " bouanto at zoho dot com
  2020-06-06 17:49 ` dmalcolm at gcc dot gnu.org
@ 2020-06-06 18:07 ` bouanto at zoho dot com
  2020-07-03  0:58 ` bouanto at zoho dot com
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: bouanto at zoho dot com @ 2020-06-06 18:07 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95498

--- Comment #3 from bouanto at zoho dot com ---
(In reply to David Malcolm from comment #2)
> Try putting a breakpoint on add_error (there are a few classes with
> add_error methods; a sufficiently smart gdb ought to put the breakpoint on
> all of them).

I added the call to gcc_jit_context_dump_to_file (ctxt, "/tmp/something.c", 1
/* update_locations */); right after create_code(ctxt) but the parameter loc is
NULL when I reach add_error in gdb so that I cannot print the line number.

It was also null when I tried with the reproducer of this issue:
https://gcc.gnu.org/bugzilla//show_bug.cgi?id=95521

Is there anything else to change in the reproducer so that it updates the
locations accordingly?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug jit/95498] unhandled conversion
  2020-06-03 13:14 [Bug jit/95498] New: unhandled conversion bouanto at zoho dot com
                   ` (2 preceding siblings ...)
  2020-06-06 18:07 ` bouanto at zoho dot com
@ 2020-07-03  0:58 ` bouanto at zoho dot com
  2020-07-13  9:42 ` acoplan at gcc dot gnu.org
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: bouanto at zoho dot com @ 2020-07-03  0:58 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95498

--- Comment #4 from Antoni <bouanto at zoho dot com> ---
Created attachment 48829
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48829&action=edit
Smaller reproducer for the bug

I was able to reduce the size of the reproducer. I attached it.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug jit/95498] unhandled conversion
  2020-06-03 13:14 [Bug jit/95498] New: unhandled conversion bouanto at zoho dot com
                   ` (3 preceding siblings ...)
  2020-07-03  0:58 ` bouanto at zoho dot com
@ 2020-07-13  9:42 ` acoplan at gcc dot gnu.org
  2020-07-13 10:39 ` bouanto at zoho dot com
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: acoplan at gcc dot gnu.org @ 2020-07-13  9:42 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95498

--- Comment #5 from Alex Coplan <acoplan at gcc dot gnu.org> ---
Created attachment 48867
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48867&action=edit
Minimal reproducer

I've done some exhaustive testing of which combinations of casts are allowed.
It seems that any program of the following form is rejected with "unhandled
conversion":

T f(T x)
{
  return (T)(U)x;
}

where T and U are integral types with U being strictly wider than T.

I've attached a minimal handwritten testcase that reproduces the issue. You
should be able to substitute the values passed to t_outer and t_inner for other
types and still reproduce the issue, provided that t_outer is a strictly
narrower type than t_inner.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug jit/95498] unhandled conversion
  2020-06-03 13:14 [Bug jit/95498] New: unhandled conversion bouanto at zoho dot com
                   ` (4 preceding siblings ...)
  2020-07-13  9:42 ` acoplan at gcc dot gnu.org
@ 2020-07-13 10:39 ` bouanto at zoho dot com
  2021-07-18 14:10 ` cvs-commit at gcc dot gnu.org
  2021-07-18 14:11 ` bouanto at zoho dot com
  7 siblings, 0 replies; 9+ messages in thread
From: bouanto at zoho dot com @ 2020-07-13 10:39 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95498

--- Comment #6 from Antoni <bouanto at zoho dot com> ---
(In reply to Alex Coplan from comment #5)
> Created attachment 48867 [details]
> Minimal reproducer
> 
> I've done some exhaustive testing of which combinations of casts are
> allowed. It seems that any program of the following form is rejected with
> "unhandled conversion":
> 
> T f(T x)
> {
>   return (T)(U)x;
> }
> 
> where T and U are integral types with U being strictly wider than T.
> 
> I've attached a minimal handwritten testcase that reproduces the issue. You
> should be able to substitute the values passed to t_outer and t_inner for
> other types and still reproduce the issue, provided that t_outer is a
> strictly narrower type than t_inner.

Yeah, that's what I figured out.

I sent a patch:
https://gcc.gnu.org/pipermail/jit/2020q3/001228.html

I'd like to have a review of it.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug jit/95498] unhandled conversion
  2020-06-03 13:14 [Bug jit/95498] New: unhandled conversion bouanto at zoho dot com
                   ` (5 preceding siblings ...)
  2020-07-13 10:39 ` bouanto at zoho dot com
@ 2021-07-18 14:10 ` cvs-commit at gcc dot gnu.org
  2021-07-18 14:11 ` bouanto at zoho dot com
  7 siblings, 0 replies; 9+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-07-18 14:10 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95498

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Antoni Boucher <antoyo@gcc.gnu.org>:

https://gcc.gnu.org/g:5cca4131e4aabf70a18e362620ad65a3cebf227a

commit r12-2384-g5cca4131e4aabf70a18e362620ad65a3cebf227a
Author: Antoni Boucher <bouanto@zoho.com>
Date:   Sun Jul 5 19:07:30 2020 -0400

    libgccjit: Handle truncation and extension for casts [PR95498]

    2021-07-18  Antoni Boucher  <bouanto@zoho.com>

    gcc/jit/
            PR target/95498
            * jit-playback.c (convert): Add support to handle truncation and
            extension in the convert function.

    gcc/testsuite/
            PR target/95498
            * jit.dg/all-non-failing-tests.h: New test.
            * jit.dg/test-cast.c: New test.

    Signed-off-by: Antoni Boucher <bouanto@zoho.com>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Bug jit/95498] unhandled conversion
  2020-06-03 13:14 [Bug jit/95498] New: unhandled conversion bouanto at zoho dot com
                   ` (6 preceding siblings ...)
  2021-07-18 14:10 ` cvs-commit at gcc dot gnu.org
@ 2021-07-18 14:11 ` bouanto at zoho dot com
  7 siblings, 0 replies; 9+ messages in thread
From: bouanto at zoho dot com @ 2021-07-18 14:11 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95498

Antoni <bouanto at zoho dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|UNCONFIRMED                 |RESOLVED

--- Comment #8 from Antoni <bouanto at zoho dot com> ---
Fixed in master.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-07-18 14:11 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-03 13:14 [Bug jit/95498] New: unhandled conversion bouanto at zoho dot com
2020-06-06 12:42 ` [Bug jit/95498] " bouanto at zoho dot com
2020-06-06 17:49 ` dmalcolm at gcc dot gnu.org
2020-06-06 18:07 ` bouanto at zoho dot com
2020-07-03  0:58 ` bouanto at zoho dot com
2020-07-13  9:42 ` acoplan at gcc dot gnu.org
2020-07-13 10:39 ` bouanto at zoho dot com
2021-07-18 14:10 ` cvs-commit at gcc dot gnu.org
2021-07-18 14:11 ` bouanto at zoho dot com

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).