Index: lib/Sema/SemaDecl.cpp =================================================================== --- lib/Sema/SemaDecl.cpp +++ lib/Sema/SemaDecl.cpp @@ -4057,7 +4057,8 @@ } // Redefinition coming from different files or couldn't do better above. - Diag(Old->getLocation(), diag::note_previous_definition); + if (Old->getLocation().isValid()) + Diag(Old->getLocation(), diag::note_previous_definition); } /// We've just determined that \p Old and \p New both appear to be definitions Index: test/Sema/redefine_extname.c =================================================================== --- test/Sema/redefine_extname.c +++ test/Sema/redefine_extname.c @@ -4,3 +4,4 @@ #pragma redefine_extname foo_static bar_static static int foo_static() { return 1; } // expected-warning {{#pragma redefine_extname is applicable to external C declarations only; not applied to function 'foo_static'}} +unsigned __int128_t; // expected-error {{redefinition of '__int128_t' as different kind of symbol}}