http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59821
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> --- While I agree with that, for _builtin_{LINE,FILE,FUNCTION} (), those were added specifically for the use in default arguments and were I think from the start meant to give you the location of the call, not of the token where it appears, otherwise those builtins don't make much sense (you could use __LINE__, __FILE__ or __FUNCTION__ instead).