On Wed, 24 May 2023 18:54:06 +0100 "Roger Sayle" <ro...@nextmovesoftware.com> 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