On Tue, Apr 26, 2022 at 07:12:13PM +0200, Mikael Morin wrote: > > I think we can't in C++11/C++14. The options can be if orig_decl would be > > declared > > earlier, then it can be > > tree orig_decl; > > if (DECL_P (expr) > > && DECL_LANG_SPECIFIC (expr) > > && (orig_decl = GFC_DECL_SAVED_DESCRIPTOR (expr)) > > && orig_decl != expr) > > return non_negative_strides_array_p (orig_decl); > > but I think this is generally frowned upon, > > or one can repeat it like: > > if (DECL_P (expr) > > && DECL_LANG_SPECIFIC (expr) > > && GFC_DECL_SAVED_DESCRIPTOR (expr) > > && GFC_DECL_SAVED_DESCRIPTOR (expr) != expr) > > return non_negative_strides_array_p (GFC_DECL_SAVED_DESCRIPTOR > > (expr)); > > I think I’ll use that. There are numerous places where macros are repeated > like this already and everybody seems to be pleased with it. > Thanks for the feedback, and for the suggestions.
Agreed in this case, GFC_DECL_SAVED_DESCRIPTOR is really just a dereference at least in release compiler. Doing that when the macro actually calls some functions is worse. Jakub