On Fri, 1 Jul 2011, Gary Funck wrote: > The reason that so many #ifdef's and #defines remain is that > I wasn't sure about the best method of parameterizing those values to > avoid the use of conditional compilation. For example, should > a small struct be defined that has fields for the configuration-specific > values?
You need to make a technical judgement among possible approaches - which may include such a structure, or a structure of function pointers, or conditionals at various places in the code. > Although the PTS representation is not target-specific, it has some > aspects of being target-specific in that the representation and > layout of the PTS changes the binary representation of the PTS > in the compiled program (and runtime), and some representations > will perform better/worse on a specific target (for example, > on some targets some UPC programs may run faster if vaddr is first. > Generally, the 'struct PTS' is chosen because it provides the > maximum range of the various fields (at the expense of using > more space to represent the PTS). In general configure options aren't really a good idea in many cases: * If something is always best on a particular architecture, maybe you want a target hook (not macro) rather than a configure option, with the target hook being set appropriately for each target and no option for the person configuring GCC to override. * If what's best depends on the particular application, a normal command-line option for the person using GCC to use is better (and then any configure option can just control specs in the driver and not directly affect the rest of the compiler). That might run into problems if there's a runtime library included with GCC that can only be built compatibly with one of the possible ABIs at a time, though it may be possible to avoid this issue in some cases (for example, using different function names for the different ABIs; cf. how libstdc++ works with both 64-bit and 128-bit long double on various targets). (Actually multilibbing the library for each ABI variant - in addition to the existing multilibbing for all GCC's runtime libraries - would be better in some cases but harder to implement.) Even if you need a configure option for the default, the command-line options may still be useful in some cases for testing and debugging purposes. -- Joseph S. Myers jos...@codesourcery.com