SV: [commited] jit: Support for global rvalue initialization and constructors

Petter Tomner tomner@kth.se
Thu Dec 30 01:16:39 GMT 2021


Could you be more specific? I tried the equivalent of:

/*    int [50] foobar = {1,2,3,4};
      int [50] foo() { int arr[50];
		       arr = (int [50]){-1,-2,-3,-4,-5,-6};
		       arr = foobar;
		       arr = (int [50]){1,2,3,4,5,6};
		       arr[6] = 1234;
		       return arr;}

       N.B: Not a typo, returning an array.
*/

in test-local-init-rvalue.c with a global and local "arr" and it ran fine. (See attachment).

Regards, Petter


Från: Antoni Boucher <bouanto@zoho.com>
Skickat: den 29 december 2021 23:45
Till: Petter Tomner; David Malcolm; jit@gcc.gnu.org; gcc-patches@gcc.gnu.org
Ämne: Re: [commited] jit: Support for global rvalue initialization and constructors
    
I realized that trying to do an assignment to an array created by the
new array constructor API will result in a "gimplification failed"
error:

libgccjit.so: error: gimplification failed
0x7fa3a441e5d3 gimplify_expr(tree_node**, gimple**, gimple**, bool
(*)(tree_node*), int)
        ../../../gcc/gcc/gimplify.c:15964
0x7fa3a442b1ab gimplify_modify_expr
        ../../../gcc/gcc/gimplify.c:5975
0x7fa3a441ac4c gimplify_expr(tree_node**, gimple**, gimple**, bool
(*)(tree_node*), int)
        ../../../gcc/gcc/gimplify.c:14951
0x7fa3a441e63c gimplify_stmt(tree_node**, gimple**)
        ../../../gcc/gcc/gimplify.c:7026
0x7fa3a441bca3 gimplify_statement_list
        ../../../gcc/gcc/gimplify.c:2014
0x7fa3a441bca3 gimplify_expr(tree_node**, gimple**, gimple**, bool
(*)(tree_node*), int)
        ../../../gcc/gcc/gimplify.c:15396
0x7fa3a441e63c gimplify_stmt(tree_node**, gimple**)
        ../../../gcc/gcc/gimplify.c:7026
0x7fa3a441f000 gimplify_bind_expr
        ../../../gcc/gcc/gimplify.c:1427
0x7fa3a441adc6 gimplify_expr(tree_node**, gimple**, gimple**, bool
(*)(tree_node*), int)
        ../../../gcc/gcc/gimplify.c:15152
0x7fa3a441e63c gimplify_stmt(tree_node**, gimple**)
        ../../../gcc/gcc/gimplify.c:7026
0x7fa3a4420671 gimplify_body(tree_node*, bool)
        ../../../gcc/gcc/gimplify.c:16197
0x7fa3a4420b3c gimplify_function_tree(tree_node*)
        ../../../gcc/gcc/gimplify.c:16351
0x7fa3a419fe5e gcc::jit::playback::function::postprocess()
        ../../../gcc/gcc/jit/jit-playback.c:1909
0x7fa3a41a13dc gcc::jit::playback::context::replay()
        ../../../gcc/gcc/jit/jit-playback.c:3250


Should an assignment to such a value be supported?

Le mercredi 15 décembre 2021 à 19:19 +0000, Petter Tomner a écrit :
> Oh ye I accidentally dropped that in the merge thank you.
> 
> I believe there is an implicit "global:" in the top of each version
> scope, so it shouldn't
> matter other than looking a bit deviant.
> 
> Regards,
> Petter
> 
> Från: Antoni Boucher <bouanto@zoho.com>
> Skickat: den 15 december 2021 15:19
> Till: Petter Tomner; David Malcolm; jit@gcc.gnu.org;
> gcc-patches@gcc.gnu.org
> Ämne: Re: [commited] jit: Support for global rvalue initialization
> and constructors
>     
> Hi Petter.
> I believe you have forgotten the line `global:` in the file
> `gcc/jit/libgccjit.map`.
> I'm not sure what this line does, but it is there for all other ABI.
> David: What do you think?
> Regards.
> 
> Le mardi 14 décembre 2021 à 17:22 +0000, Petter Tomner via Jit a
> écrit :
> > Hi!
> > 
> > I have pushed the patch for rvalue initialization and ctors for
> > libgccjit, for ABI 19.
> > 
> > Please see attached patch.
> > 
> > Regards,
> > Petter
> >           
> 
>     

    
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bug_test.patch
Type: text/x-patch
Size: 3553 bytes
Desc: bug_test.patch
URL: <https://gcc.gnu.org/pipermail/jit/attachments/20211230/c929e692/attachment.bin>


More information about the Jit mailing list