On Wed, Apr 17, 2019 at 08:59:08AM +0100, Kyrill Tkachov wrote: > Similarly, spaces are allowed in the general attribute syntax, for example > in our intrinsics header we have: > > __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
Well, that is how the C/C++ lexing works. We also allow __attribute__ ((__always_inline__ , __gnu_inline__ , __artificial__ )) etc. The whitespace skipping in the target string handling allowed target (" abc, def") but didn't allow target ("abc , def") or target ("abc ,def") etc. IMHO either we shouldn't allow any whitespace anywhere, or allow it everywhere (leading, trailing, before or after comma), but then for consistency all targets should do that. If one wants to do some whitespace, there is always an option to do target ("abc," "def") or target ("abc," "def") or #define C(x) #x target (C(abc) "," C(def)) or whatever else one wants to use. Jakub