[llvm] 4ccb6c3 - Fix violations of [basic.class.scope]p2.
Richard Smith via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 2 08:17:54 PDT 2020
On Mon, 1 Jun 2020 at 23:23, Roman Lebedev <lebedev.ri at gmail.com> wrote:
> On Tue, Jun 2, 2020 at 8:03 AM Richard Smith via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
> >
> >
> > Author: Richard Smith
> > Date: 2020-06-01T22:03:05-07:00
> > New Revision: 4ccb6c36a9159809f4b98176325ae202753fe136
> >
> > URL:
> https://github.com/llvm/llvm-project/commit/4ccb6c36a9159809f4b98176325ae202753fe136
> > DIFF:
> https://github.com/llvm/llvm-project/commit/4ccb6c36a9159809f4b98176325ae202753fe136.diff
> >
> > LOG: Fix violations of [basic.class.scope]p2.
> >
> > These cases all follow the same pattern:
> >
> > struct A {
> > friend class X;
> > //...
> > class X {};
> > };
> >
> > But 'friend class X;' injects 'X' into the surrounding namespace scope,
> > rather than introducing a class member. So the second 'class X {}' is a
> > completely different type, which changes the meaning of the earlier name
> > 'X' from '::X' to 'A::X'.
> >
> > Additionally, the friend declaration is pointless -- members of a class
> > don't need to be befriended to be able to access private members.
> Should there be a clang diagnostic for such a situation?
>
https://reviews.llvm.org/D80977 :)
> Roman
>
> > Added:
> >
> >
> > Modified:
> > clang/lib/Analysis/CFG.cpp
> > clang/utils/TableGen/NeonEmitter.cpp
> > llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
> > llvm/lib/CodeGen/InterferenceCache.h
> >
> > Removed:
> >
> >
> >
> >
> ################################################################################
> > diff --git a/clang/lib/Analysis/CFG.cpp b/clang/lib/Analysis/CFG.cpp
> > index bedc8455366f..fc74226951a4 100644
> > --- a/clang/lib/Analysis/CFG.cpp
> > +++ b/clang/lib/Analysis/CFG.cpp
> > @@ -223,8 +223,6 @@ class AddStmtChoice {
> > ///
> > class LocalScope {
> > public:
> > - friend class const_iterator;
> > -
> > using AutomaticVarsTy = BumpVector<VarDecl *>;
> >
> > /// const_iterator - Iterates local scope backwards and jumps to
> previous
> >
> > diff --git a/clang/utils/TableGen/NeonEmitter.cpp
> b/clang/utils/TableGen/NeonEmitter.cpp
> > index 9166e7a718ec..625954fe8a04 100644
> > --- a/clang/utils/TableGen/NeonEmitter.cpp
> > +++ b/clang/utils/TableGen/NeonEmitter.cpp
> > @@ -303,8 +303,6 @@ class Variable {
> > /// The main grunt class. This represents an instantiation of an
> intrinsic with
> > /// a particular typespec and prototype.
> > class Intrinsic {
> > - friend class DagEmitter;
> > -
> > /// The Record this intrinsic was created from.
> > Record *R;
> > /// The unmangled name.
> >
> > diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
> b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
> > index df0899930a80..bb0f550b9654 100644
> > --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
> > +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
> > @@ -640,7 +640,6 @@ class DwarfDebug : public DebugHandlerBase {
> > void addDwarfTypeUnitType(DwarfCompileUnit &CU, StringRef Identifier,
> > DIE &Die, const DICompositeType *CTy);
> >
> > - friend class NonTypeUnitContext;
> > class NonTypeUnitContext {
> > DwarfDebug *DD;
> > decltype(DwarfDebug::TypeUnitsUnderConstruction)
> TypeUnitsUnderConstruction;
> >
> > diff --git a/llvm/lib/CodeGen/InterferenceCache.h
> b/llvm/lib/CodeGen/InterferenceCache.h
> > index 50c6ac62d194..9019e9f61fa0 100644
> > --- a/llvm/lib/CodeGen/InterferenceCache.h
> > +++ b/llvm/lib/CodeGen/InterferenceCache.h
> > @@ -157,8 +157,6 @@ class LLVM_LIBRARY_VISIBILITY InterferenceCache {
> > Entry *get(unsigned PhysReg);
> >
> > public:
> > - friend class Cursor;
> > -
> > InterferenceCache() = default;
> >
> > ~InterferenceCache() {
> >
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200602/de6517f9/attachment.html>
More information about the llvm-commits
mailing list