Jason Merrill <[email protected]> writes:
> On 07/04/2014 05:13 AM, Dodji Seketeli wrote:
>>> >// preprocessed output
>>> ># 3 "test.cpp" 3 4
>>> >sys_token
>>> ># 3 "test.cpp"
>>> >3
>>> ># 3 "test.cpp" 3 4
>>> >sys_token
>
>> Yeah. For Built-in tokens that are expanded like that we only do track
>> their the location of their expansion, not their spelling location. So
>> this behaviour is expected as well.
>
> But surely you can do something to avoid this useless line marker in
> this case? A built-in token should never require a line change.
What triggers the line change is the *expansion* of the built-in macro
__LINE__.
That is, the token "3". As the existing location tracking facility
doesn't track the locations for tokens originating from the expansion of
built-in macros, the relationship "3" -> __LINE__ is lost.
My understanding is that to avoid emitting the line marker in this case,
we'd need to track the "3" -> __LINE__ relationship so that we can
detect that "3" is the expansion of the built-in macro__LINE__.
This would be a separate patch that I'd need to work on and test
separately I guess.
Should that prevent this patch to go in now?
--
Dodji