On Wed, Nov 22, 2017 at 1:47 PM, Nathan Sidwell <nat...@acm.org> wrote: > On 11/21/2017 06:14 AM, Dominik Inführ wrote: >> >> Hi, >> >> this patch tries to extend tree-ssa-dce.c to remove unnecessary >> new/delete-pairs (it already does that for malloc/free). Clang does it too >> and it seems to be allowed by >> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3664.html. I’ve >> bootstrapped/regtested on aarch64-linux and x86_64-linux. > > > nice. > >> --- a/gcc/tree-core.h >> +++ b/gcc/tree-core.h >> @@ -1787,7 +1787,9 @@ struct GTY(()) tree_function_decl { >> unsigned has_debug_args_flag : 1; >> unsigned tm_clone_flag : 1; >> unsigned versioned_function : 1; >> - /* No bits left. */ >> + >> + unsigned operator_delete_flag : 1; >> + /* 31 bits left. */ >> }; > > > that's unpleasant. We have DECL_IS_{MALLOC,OPERATOR_{NEW,DELETE}} flags, > which are all mutually exclusive. If only there was a way to encode a > 4-valued enumeration in fewer than 3 bits ... :) (not sure why we don't > have DECL_IS_FREE, and as we don't, why is DECL_IS_OPERATOR_DELETE needed? > > (we also have DECL_IS_{CON,DE}STRUCTOR flags, which I think are also > mutually exclusive with the above. So that's 5 or (6 if we add > DECL_IS_FREE), that could be encoded in 3 bits. > > There may be even more mutually exclusive flags, > DECL_STATIC_{CON,DE}STRUCTOR may be candiates?
Yes, there's room for cleanup (as I noted). And ok, if we don't want to regress 32bit hosts we can put a new flag in decl_common indeed. So please do that. Anything else can be done as followup and need not be done as part of this patch. An enum for this would work I guess. Richard. > > nathan > > -- > Nathan Sidwell