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]

Re: RFD: HAVE_* pattern flags


On Tue, 16 Oct 2012, Joern Rennecke wrote:

>  - 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.

I think that's appropriate.

Note: for patterns that involve a machine mode, I think it's better to 
generate a macro (or function) that takes the mode as a parameter.  This 
is because most references to modes such as SImode or DFmode in 
architecture-independent code are in principle dubious and would need to 
be eliminated for ports to unusual architectures with non-8-bit bytes 
(rather than being defined in architecture-independent code, it would be 
better to have a config/8-bit-byte-modes.def that's used by normal 
architectures but not by any future unusual ones).

For example, if such macros / functions are generated automatically, 
c-family/c-cppbuiltin.c:mode_has_fma could cease to hardcode a list of 
four floating-point modes; instead, the caller could just call the new 
HAVE_ macro directly, with the mode as a parameter.

>  - We could have a header file that is maintained by hand, with a string
>    of #ifdef / #define / #endif .

I think this is probably the simplest and so best approach - just list 
those patterns for which the HAVE_* is actually used.  Or a text file with 
a list, indicating in some way the machine mode parameters to patterns for 
which those are relevant.

-- 
Joseph S. Myers
joseph@codesourcery.com


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