Skip to content

Commit 9cc6bba

Browse files
Matt DavisMatt Davis
Matt Davis
authored and
Matt Davis
committedMar 28, 2018
[Diag] Avoid emitting a redefinition note if no location is available.
Summary: The "previous definition is here" note is not helpful if there is no location information. The note will reference nothing in such a case. This patch first checks to see if there is location data, and if so the note diagnostic is emitted. This fixes PR15409. The issue in the first comment seems to already be resolved. This patch addresses the second example. Reviewers: bruno, rsmith Reviewed By: bruno Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D44901 llvm-svn: 328712
1 parent da5c6ac commit 9cc6bba

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed
 

‎clang/lib/Sema/SemaDecl.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4057,7 +4057,8 @@ void Sema::notePreviousDefinition(const NamedDecl *Old, SourceLocation New) {
40574057
}
40584058

40594059
// Redefinition coming from different files or couldn't do better above.
4060-
Diag(Old->getLocation(), diag::note_previous_definition);
4060+
if (Old->getLocation().isValid())
4061+
Diag(Old->getLocation(), diag::note_previous_definition);
40614062
}
40624063

40634064
/// We've just determined that \p Old and \p New both appear to be definitions

‎clang/test/Sema/redefine_extname.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
#pragma redefine_extname foo_static bar_static
55
static int foo_static() { return 1; } // expected-warning {{#pragma redefine_extname is applicable to external C declarations only; not applied to function 'foo_static'}}
66

7+
unsigned __int128_t; // expected-error {{redefinition of '__int128_t' as different kind of symbol}}

0 commit comments

Comments
 (0)
Please sign in to comment.