[PATCH] Remove dead code (check for impossible condition) in Sema::ActOnFriendFunctionDecl
Stephen Lin
swlin at post.harvard.edu
Tue Mar 19 22:50:38 PDT 2013
Thank you, I've already verified that no tests are affected, so this
is good to be picked up.
On Wed, Mar 20, 2013 at 1:06 AM, John McCall <rjmccall at apple.com> wrote:
> On Mar 18, 2013, at 10:56 AM, Stephen Lin <swlin at post.harvard.edu> wrote:
>> I found code in Sema::ActOnFriendFunctionDecl() which I am almost sure
>> is dead and would like to remove it.
>>
>> The code in question is the following check:
>>
>> if (!Previous.empty() && DC->Equals(CurContext))
>> Diag(DS.getFriendSpecLoc(),
>> getLangOpts().CPlusPlus11 ?
>> diag::warn_cxx98_compat_friend_is_member :
>> diag::err_friend_is_member);
>>
>> which happens immediately after this loop:
>>
>> DC = CurContext;
>> while (true) {
>> while (DC->isRecord() || DC->isTransparentContext())
>> DC = DC->getParent();
>>
>> LookupQualifiedName(Previous, DC);
>>
>> // TODO: decide what we think about using declarations.
>> if (isLocal || !Previous.empty())
>> break;
>>
>> if (isTemplateId) {
>> if (isa<TranslationUnitDecl>(DC)) break;
>> } else {
>> if (DC->isFileContext()) break;
>> }
>> DC = DC->getParent();
>> }
>>
>> There doesn't seem to be any possibility that DC->Equals(CurContext)
>> after this loop, since friends can only be declared in records; in any
>> case the error given only makes sense in a record context anyway. (The
>> same check is also present in another branch, but that one is OK since
>> it involves qualified names.)
>>
>> Please let me know if I am correct and if this is OK to be patched.
>
> I agree with your analysis. Assuming that it doesn't change any test cases,
> feel free to take it out.
>
> John.
More information about the cfe-commits
mailing list