On 11/07/2015 12:50 AM, David Wohlferd wrote:
- Starting with 'modifiers', "=+&" and (reluctantly) "%" seem reasonable
for inline asm. But both "#*" seem sketchy.
Right. =+& are no-brainer yes, as are the constants 0-9. % is probably
OK as well.
#* are similar to !? in that they are inherently tied into the register
class preferencing implementation and documenting them would be inadvisable.
- Under 'simple constraints', "mringX" all (more or less) make sense to
me. But "oV<>sp" are not things I can envision using.
The various offsettables (oV), pre/post increment (<>), address (p) make
sense I'm not sure about (s).
- The 'machine constraints' for i386 (the only machine I know) all seem
reasonable. However for platforms that support autoincrement
(powerpc?), apparently using "m" needs more docs (per
https://gcc.gnu.org/ml/gcc/2008-03/msg01079.html).
Are these the things to which you are referring? I've always assumed
the parts that seem obscure here were due to my i386-centric view of the
world. Are some of them actually md-only?
A few may be md-only, but generally folks have found that getting access
to the target's constraints to be useful in asms. I was hesitant to
document them initially because it made it much easier for someone to
setup a situation where the compiler couldn't generate correct code.
Those issues have (mostly) been fixed through the years.
Jeff