SV: SV: [commited] jit: Support for global rvalue initialization and constructors
Oh ye no it is probably terrible missuse trying to write into the constructor. =) Maybe I should look into barring that entrypoint for constructors. Kinda overlooked that rvalue arrays could be used as lvalues. /Petter Från: Antoni Boucher Skickat: den 30 december 2021 02:40 Till: Petter Tomner; David Malcolm; j...@gcc.gnu.org; gcc-patches@gcc.gnu.org Ämne: Re: SV: [commited] jit: Support for global rvalue initialization and constructors Oh, sorry, I meant when you have an array not in a local variable, and you try to assign to an index of this array. Something like: gcc_jit_rvalue *ctor = gcc_jit_context_new_array_constructor (ctxt,0,int50arr_type,6,values); gcc_jit_block_add_assignment (block, 0, gcc_jit_context_new_array_access(NULL, ctor, gcc_jit_context_zero(int_type)), some_value); Le jeudi 30 décembre 2021 à 01:16 +, Petter Tomner a écrit : > 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 > Skickat: den 29 december 2021 23:45 > Till: Petter Tomner; David Malcolm; j...@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 +, 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 > > Skickat: den 15 december 2021 15:19 > > Till: Petter Tomner; David Malcolm; j...@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 +, 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 > > > > > > > > >
Re: SV: [commited] jit: Support for global rvalue initialization and constructors
Oh, sorry, I meant when you have an array not in a local variable, and you try to assign to an index of this array. Something like: gcc_jit_rvalue *ctor = gcc_jit_context_new_array_constructor (ctxt,0,int50arr_type,6,values); gcc_jit_block_add_assignment (block, 0, gcc_jit_context_new_array_access(NULL, ctor, gcc_jit_context_zero(int_type)), some_value); Le jeudi 30 décembre 2021 à 01:16 +, Petter Tomner a écrit : > 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 > Skickat: den 29 december 2021 23:45 > Till: Petter Tomner; David Malcolm; j...@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 +, 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 > > Skickat: den 15 december 2021 15:19 > > Till: Petter Tomner; David Malcolm; j...@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 +, 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 > > > > > > > > >
SV: [commited] jit: Support for global rvalue initialization and constructors
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 Skickat: den 29 december 2021 23:45 Till: Petter Tomner; David Malcolm; j...@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 +, 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 > Skickat: den 15 december 2021 15:19 > Till: Petter Tomner; David Malcolm; j...@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 +, 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 > > > > diff --git a/gcc/testsuite/jit.dg/test-local-init-rvalue.c b/gcc/testsuite/jit.dg/test-local-init-rvalue.c index 1d74679c07c..308f5c39538 100644 --- a/gcc/testsuite/jit.dg/test-local-init-rvalue.c +++ b/gcc/testsuite/jit.dg/test-local-init-rvalue.c @@ -456,12 +456,42 @@ create_code (gcc_jit_context *ctxt, void *user_data) 0, gcc_jit_lvalue_as_rvalue(local)); } - { /* int[50] foo() { int arr[50]; + { /* 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. */ + +gcc_jit_rvalue *rval_1 = gcc_jit_context_new_rvalue_from_int ( + ctxt, int_type, 1); +gcc_jit_rvalue *rval_2 = gcc_jit_context_new_rvalue_from_int ( + ctxt, int_type, 2); +gcc_jit_rvalue *rval_3 = gcc_jit_context_new_rvalue_from_int ( + ctxt, int_type, 3); +gcc_jit_rvalue *rval_4 = gcc_jit_context_new_rvalue_from_int ( + ctxt, int_type, 4); + +gcc_jit_rvalue *values4[] = {rval_1, rval_2, rval_3, rval_4}; + +gcc_jit_rvalue *ctor3 = + gcc_jit_context_new_array_constructor (ctxt, + 0, + int50arr_type, + 4, + values4); +gcc_jit_lvalue *global_intarr_1234 = + gcc_jit_context_new_global (ctxt, NULL, + GCC_JIT_GLOBAL_EXPORTED, + int50arr_type, + "foobar"); + +gcc_jit_global_set_initializer_rvalue (global_intarr_1234, ctor3); + gc
SV: [commited] jit: Support for global rvalue initialization and constructors
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 Skickat: den 15 december 2021 15:19 Till: Petter Tomner; David Malcolm; j...@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 +, 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 >