From 07c0f285ba92148f5793959c386dc2ba8f0cc7f7 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Sun, 7 Jan 2018 22:18:05 +0000 Subject: Fix a couple of wrong self-comparison diagnostics. Check whether we are comparing the same entity, not merely the same declaration, and don't assume that weak declarations resolve to distinct entities. llvm-svn: 321976 --- clang/test/Sema/self-comparison.c | 5 +++++ clang/test/SemaCXX/self-comparison.cpp | 4 ++++ 2 files changed, 9 insertions(+) (limited to 'clang/test') diff --git a/clang/test/Sema/self-comparison.c b/clang/test/Sema/self-comparison.c index edb3a6a4c8a..bd7adcd9cda 100644 --- a/clang/test/Sema/self-comparison.c +++ b/clang/test/Sema/self-comparison.c @@ -86,3 +86,8 @@ int R8435950(int i) { return 1; } +__attribute__((weak)) int weak_1[3]; +__attribute__((weak)) int weak_2[3]; +_Bool compare_weak() { + return weak_1 == weak_2; +} diff --git a/clang/test/SemaCXX/self-comparison.cpp b/clang/test/SemaCXX/self-comparison.cpp index fb15ec84306..2af19abb30a 100644 --- a/clang/test/SemaCXX/self-comparison.cpp +++ b/clang/test/SemaCXX/self-comparison.cpp @@ -21,3 +21,7 @@ struct A { return a == c; // expected-warning {{array comparison always evaluates to false}} } }; + +namespace NA { extern "C" int x[3]; } +namespace NB { extern "C" int x[3]; } +bool k = NA::x == NB::x; // expected-warning {{self-comparison always evaluates to true}} -- cgit v1.2.3