This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RFD: HAVE_* pattern flags


Sorry for the recent loop-doloop.c breakage.  I did test it, but I didn't take
a day to re-test it the two hundred configurations in config-list.mk and
sift out the pre-broken ports; as i had only changed 'target-independent'
code since the last full test, I only tested in on i686-pc-linux-gnu.
Which unfortunately did not cover the piece of code that was affected
by the merge failure.

I remember at some point we said that we wanted less #ifdef and more if ()
tests, so that we get more uniform syntax / warning coverage when testing
one target.  One big blind spot that's left there are the
HAVE_xxx flags for instruction patterns, like HAVE_doloop_end
or HAVE_nonlocal_goto .  So, three questions:

- Is there consensus that we would like to change this?

- What would a good naming scheme be?
  - Change the semantics of the HAVE_pattern macros for officially named
    patterns so that they are defined as 0 when the pattern is not provided?
    That choice would actually force people to change #ifdef into if (),
    without the possibility of #if, where targets can have non-constant
    pattern predicates.
  - Have_pattern?
  - have_pattern?
  - any other preferences?

- how do we get the list of 'official' named patterns?
- We could have a header file that is maintained by hand, with a string
of #ifdef / #define / #endif .
- Or we could build the list automatically, something like grep for
@code{..} in md.texi, and check if at least one target defines a
pattern with that name.
- introduce a special markup for named patterns in md.texi, and grep for that.
- have some markup in the compiler source files that check the value
- a special case of the previous option, mixed with a special choice for the
previous (naming) question: using a naming scheme that can be picked out
by the generator file, e.g. HAVE_named_pattern_nonlocal_goto_receiver.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]