PING^3 Re: [i386 PATCH] A minor code clean-up: Use NULL_RTX instead of nullptr
On Wed, 14 Jun 2023 21:14:02 +0200 Bernhard Reutner-Fischer wrote: > plonk. ping^3 patch at https://inbox.sourceware.org/gcc-patches/20230526103151.3a7f6...@nbbrfq.loc/ I would regenerate it for rtx and/or tree, though, whatever you deem desirable? thanks > > On 26 May 2023 10:31:51 CEST, Bernhard Reutner-Fischer > wrote: > >On Thu, 25 May 2023 18:58:04 +0200 > >Bernhard Reutner-Fischer wrote: > > > >> On Wed, 24 May 2023 18:54:06 +0100 > >> "Roger Sayle" wrote: > >> > >> > My understanding is that GCC's preferred null value for rtx is NULL_RTX > >> > (and for tree is NULL_TREE), and by being typed allows strict type > >> > checking, > >> > and use with function polymorphism and template instantiation. > >> > C++'s nullptr is preferred over NULL and 0 for pointer types that don't > >> > have a defined null of the correct type. > >> > > >> > This minor clean-up uses NULL_RTX consistently in i386-expand.cc. > >> > >> Oh. Well, i can't resist cleanups :) > > > >> (and handle nullptr too, and the same game for tree) > > > > so like the attached. And > > sed -e 's/RTX/TREE/g' -e 's/rtx/tree/g' \ > > < ~/coccinelle/gcc-rtx-null.0.cocci \ > > > ~/coccinelle/gcc-tree-null.0.cocci > > > > I do not know if we want to shorten explicit NULL comparisons. > > foo == NULL => !foo and foo != NULL => foo > > Left them alone in the form they were written. > > > > See the attached result of the rtx hunks, someone would have to build > > I've bootstrapped and regtested the hunks for rtx as cited up-thread without > regressions (as expected). > > I know everybody is busy, but I'd like to know if I should swap these out > completely, > or postpone this until start of stage3 or next stage 1 or something. > I can easily keep these local to my personal pre-configure stage for my own > amusement. > > thanks, > > >it and hack git-commit-mklog.py --changelog 'Use NULL_RTX.' > >to print("{}.".format(random.choice(['Ditto', 'Same', 'Likewise']))) ;) > > > >> > >> Just a thought.. > > > >cheers, >
Re: [i386 PATCH] A minor code clean-up: Use NULL_RTX instead of nullptr
plonk. On 26 May 2023 10:31:51 CEST, Bernhard Reutner-Fischer wrote: >On Thu, 25 May 2023 18:58:04 +0200 >Bernhard Reutner-Fischer wrote: > >> On Wed, 24 May 2023 18:54:06 +0100 >> "Roger Sayle" wrote: >> >> > My understanding is that GCC's preferred null value for rtx is NULL_RTX >> > (and for tree is NULL_TREE), and by being typed allows strict type >> > checking, >> > and use with function polymorphism and template instantiation. >> > C++'s nullptr is preferred over NULL and 0 for pointer types that don't >> > have a defined null of the correct type. >> > >> > This minor clean-up uses NULL_RTX consistently in i386-expand.cc. >> >> Oh. Well, i can't resist cleanups :) > >> (and handle nullptr too, and the same game for tree) > >so like the attached. And >sed -e 's/RTX/TREE/g' -e 's/rtx/tree/g' \ > < ~/coccinelle/gcc-rtx-null.0.cocci \ > > ~/coccinelle/gcc-tree-null.0.cocci > >I do not know if we want to shorten explicit NULL comparisons. > foo == NULL => !foo and foo != NULL => foo >Left them alone in the form they were written. > >See the attached result of the rtx hunks, someone would have to build I've bootstrapped and regtested the hunks for rtx as cited up-thread without regressions (as expected). I know everybody is busy, but I'd like to know if I should swap these out completely, or postpone this until start of stage3 or next stage 1 or something. I can easily keep these local to my personal pre-configure stage for my own amusement. thanks, >it and hack git-commit-mklog.py --changelog 'Use NULL_RTX.' >to print("{}.".format(random.choice(['Ditto', 'Same', 'Likewise']))) ;) > >> >> Just a thought.. > >cheers,
Re: [i386 PATCH] A minor code clean-up: Use NULL_RTX instead of nullptr
On Thu, 25 May 2023 18:58:04 +0200 Bernhard Reutner-Fischer wrote: > On Wed, 24 May 2023 18:54:06 +0100 > "Roger Sayle" wrote: > > > My understanding is that GCC's preferred null value for rtx is NULL_RTX > > (and for tree is NULL_TREE), and by being typed allows strict type checking, > > and use with function polymorphism and template instantiation. > > C++'s nullptr is preferred over NULL and 0 for pointer types that don't > > have a defined null of the correct type. > > > > This minor clean-up uses NULL_RTX consistently in i386-expand.cc. > > Oh. Well, i can't resist cleanups :) > (and handle nullptr too, and the same game for tree) so like the attached. And sed -e 's/RTX/TREE/g' -e 's/rtx/tree/g' \ < ~/coccinelle/gcc-rtx-null.0.cocci \ > ~/coccinelle/gcc-tree-null.0.cocci I do not know if we want to shorten explicit NULL comparisons. foo == NULL => !foo and foo != NULL => foo Left them alone in the form they were written. See the attached result of the rtx hunks, someone would have to build it and hack git-commit-mklog.py --changelog 'Use NULL_RTX.' to print("{}.".format(random.choice(['Ditto', 'Same', 'Likewise']))) ;) > > Just a thought.. cheers, gcc-rtx-null.0.cocci Description: Binary data diff --git a/gcc/alias.cc b/gcc/alias.cc index 7dc7e06de07..f1925ab3de2 100644 --- a/gcc/alias.cc +++ b/gcc/alias.cc @@ -1725,7 +1725,7 @@ get_reg_known_value (unsigned int regno) if (regno < vec_safe_length (reg_known_value)) return (*reg_known_value)[regno]; } - return NULL; + return NULL_RTX; } /* Set it. */ diff --git a/gcc/auto-inc-dec.cc b/gcc/auto-inc-dec.cc index 1486e8c679a..568fae7b906 100644 --- a/gcc/auto-inc-dec.cc +++ b/gcc/auto-inc-dec.cc @@ -428,7 +428,7 @@ move_dead_notes (rtx_insn *to_insn, rtx_insn *from_insn, rtx pattern) { rtx note; rtx next_note; - rtx prev_note = NULL; + rtx prev_note = NULL_RTX; for (note = REG_NOTES (from_insn); note; note = next_note) { diff --git a/gcc/bb-reorder.cc b/gcc/bb-reorder.cc index 615d5426a34..e42e4593a6a 100644 --- a/gcc/bb-reorder.cc +++ b/gcc/bb-reorder.cc @@ -1477,7 +1477,7 @@ sjlj_fix_up_crossing_landing_pad (basic_block old_bb) rtx_insn *insn = BB_END (e->src); rtx note = find_reg_note (insn, REG_EH_REGION, NULL_RTX); - gcc_assert (note != NULL); + gcc_assert (note != NULL_RTX); const unsigned old_index = INTVAL (XEXP (note, 0)); /* Generate the new landing-pad structure. */ @@ -1525,7 +1525,7 @@ dw2_fix_up_crossing_landing_pad (eh_landing_pad old_lp, basic_block old_bb) rtx_insn *insn = BB_END (e->src); rtx note = find_reg_note (insn, REG_EH_REGION, NULL_RTX); - gcc_assert (note != NULL); + gcc_assert (note != NULL_RTX); gcc_checking_assert (INTVAL (XEXP (note, 0)) == old_lp->index); XEXP (note, 0) = GEN_INT (new_lp->index); diff --git a/gcc/builtins.cc b/gcc/builtins.cc index 8400adaf5b4..48df3d4d193 100644 --- a/gcc/builtins.cc +++ b/gcc/builtins.cc @@ -985,7 +985,7 @@ expand_builtin_setjmp_receiver (rtx receiver_label) } } - if (receiver_label != NULL && targetm.have_builtin_setjmp_receiver ()) + if (receiver_label != NULL_RTX && targetm.have_builtin_setjmp_receiver ()) emit_insn (targetm.gen_builtin_setjmp_receiver (receiver_label)); else if (targetm.have_nonlocal_goto_receiver ()) emit_insn (targetm.gen_nonlocal_goto_receiver ()); @@ -4118,7 +4118,7 @@ expand_builtin_strncpy (tree exp, rtx target) static rtx gen_memset_value_from_prev (by_pieces_prev *prev, fixed_size_mode mode) { - rtx target = nullptr; + rtx target = NULL_RTX; if (prev != nullptr && prev->data != nullptr) { /* Use the previous data in the same mode. */ @@ -4179,7 +4179,7 @@ gen_memset_value_from_prev (by_pieces_prev *prev, fixed_size_mode mode) break; } } - if (target == nullptr) + if (target == NULL_RTX) prev_rtx = copy_to_reg (prev_rtx); } @@ -4203,7 +4203,7 @@ builtin_memset_read_str (void *data, void *prev, rtx target = gen_memset_value_from_prev ((by_pieces_prev *) prev, mode); - if (target != nullptr) + if (target != NULL_RTX) return target; rtx src = gen_int_mode (*c, QImode); @@ -4250,7 +4250,7 @@ builtin_memset_gen_str (void *data, void *prev, return (rtx) data; target = gen_memset_value_from_prev ((by_pieces_prev *) prev, mode); - if (target != nullptr) + if (target != NULL_RTX) return target; if (VECTOR_MODE_P (mode)) @@ -6278,11 +6278,11 @@ expand_builtin_atomic_compare_exchange (machine_mode mode, tree exp, is_weak = true; if (target == const0_rtx) -target = NULL; +target = NULL_RTX; /* Lest the rtl backend create a race condition with an imporoper store to memory, always create a new pseudo for OLDVAL. */ - oldval = NULL; + oldval = NULL_RTX; if (!expand_atomic_compare_and_swap (, , mem, expect, desired, is_weak, success, failure)) @@ -6387,8 +6387,8 @@ expand_ifn_atomic_compare_exchange (gcall *call)
Re: [i386 PATCH] A minor code clean-up: Use NULL_RTX instead of nullptr
On Wed, 24 May 2023 18:54:06 +0100 "Roger Sayle" wrote: > My understanding is that GCC's preferred null value for rtx is NULL_RTX > (and for tree is NULL_TREE), and by being typed allows strict type checking, > and use with function polymorphism and template instantiation. > C++'s nullptr is preferred over NULL and 0 for pointer types that don't > have a defined null of the correct type. > > This minor clean-up uses NULL_RTX consistently in i386-expand.cc. Oh. Well, i can't resist cleanups :) Given $ cat /tmp/inp0.c ; echo EOF rtx myfunc (int i, int j) { rtx ret; if (i) return NULL; if (j) ret = NULL; if (ret == NULL) { ret = NULL_RTX; } if (!ret) return (rtx)2; return NULL_RTX; } EOF $ spatch --c++=11 --smpl-spacing --in-place --sp-file ~/coccinelle/rtx-null.0.cocci /tmp/inp0.c init_defs_builtins: /usr/bin/../lib/coccinelle/standard.h --- /tmp/inp0.c +++ /tmp/cocci-output-76891-58af4a-inp0.c @@ -2,10 +2,10 @@ rtx myfunc (int i, int j) { rtx ret; if (i) -return NULL; +return NULL_RTX; if (j) - ret = NULL; - if (ret == NULL) { + ret = NULL_RTX; + if (ret == NULL_RTX) { ret = NULL_RTX; } if (!ret) HANDLING: /tmp/inp0.c diff = So you if you would feel like, someone could find ./ \( -name "testsuite" -o -name "contrib" -o -name "examples" -o -name ".git" -o -name "zlib" -o -name "intl" \) -prune -o \( -name "*.[chpx]*" -a -type f \) -exec spatch --c++=11 --smpl-spacing --in-place $opts --sp-file ~/coccinelle/rtx-null.0.cocci {} \; with the attached rtx-null coccinelle script. (and handle nullptr too, and the same game for tree) Just a thought.. rtx-null.0.cocci Description: Binary data