r348276 - [AST][NFC] Make ArrayTypeTraitExpr non polymorphic

Mikael Holmén via cfe-commits cfe-commits at lists.llvm.org
Tue Dec 11 06:13:35 PST 2018


Hi Bruno,

I've no idea if this is really related to your change, but with this 
commit, the following starts crashing:

clang-tidy -allow-enabling-analyzer-alpha-checkers 
-checks='-*,clang-analyzer-*' ./reduced.c --

It seems like it recurses forever for some reason, and then we run out 
of stack and it crashes:

elxhw7c132-n7[llvm]: build-all-bbigcc/bin/clang-tidy 
-allow-enabling-analyzer-alpha-checkers -checks='-*,clang-analyzer-*' 
./reduced.c --
#0 0x000000000074fbda llvm::sys::PrintStackTrace(llvm::raw_ostream&) 
(build-all-bbigcc/bin/clang-tidy+0x74fbda)
#1 0x000000000074e0aa llvm::sys::RunSignalHandlers() 
(build-all-bbigcc/bin/clang-tidy+0x74e0aa)
#2 0x000000000074e1d7 SignalHandler(int) 
(build-all-bbigcc/bin/clang-tidy+0x74e1d7)
#3 0x00007f6cd7f84330 __restore_rt 
(/lib/x86_64-linux-gnu/libpthread.so.0+0x10330)
#4 0x0000000000f06c63 clang::StmtVisitorBase<std::add_pointer, 
(anonymous namespace)::StringRefCheckerVisitor, 
void>::Visit(clang::Stmt*) (build-all-bbigcc/bin/clang-tidy+0xf06c63)
#5 0x0000000000f0a282 (anonymous 
namespace)::StringRefCheckerVisitor::VisitChildren(clang::Stmt*) 
(build-all-bbigcc/bin/clang-tidy+0xf0a282)
#6 0x0000000000f0527f clang::StmtVisitorBase<std::add_pointer, 
(anonymous namespace)::StringRefCheckerVisitor, 
void>::Visit(clang::Stmt*) (.part.132) 
(build-all-bbigcc/bin/clang-tidy+0xf0527f)
#7 0x0000000000f06c68 clang::StmtVisitorBase<std::add_pointer, 
(anonymous namespace)::StringRefCheckerVisitor, 
void>::Visit(clang::Stmt*) (build-all-bbigcc/bin/clang-tidy+0xf06c68)
#8 0x0000000000f0a282 (anonymous 
namespace)::StringRefCheckerVisitor::VisitChildren(clang::Stmt*) 
(build-all-bbigcc/bin/clang-tidy+0xf0a282)
#9 0x0000000000f03fcf clang::StmtVisitorBase<std::add_pointer, 
(anonymous namespace)::StringRefCheckerVisitor, 
void>::Visit(clang::Stmt*) (.part.132) 
(build-all-bbigcc/bin/clang-tidy+0xf03fcf)
#10 0x0000000000f06c68 clang::StmtVisitorBase<std::add_pointer, 
(anonymous namespace)::StringRefCheckerVisitor, 
void>::Visit(clang::Stmt*) (build-all-bbigcc/bin/clang-tidy+0xf06c68)
#11 0x0000000000f0a282 (anonymous 
namespace)::StringRefCheckerVisitor::VisitChildren(clang::Stmt*) 
(build-all-bbigcc/bin/clang-tidy+0xf0a282)
#12 0x0000000000f03fcf clang::StmtVisitorBase<std::add_pointer, 
(anonymous namespace)::StringRefCheckerVisitor, 
void>::Visit(clang::Stmt*) (.part.132) 
(build-all-bbigcc/bin/clang-tidy+0xf03fcf)
#13 0x0000000000f06c68 clang::StmtVisitorBase<std::add_pointer, 
(anonymous namespace)::StringRefCheckerVisitor, 
void>::Visit(clang::Stmt*) (build-all-bbigcc/bin/clang-tidy+0xf06c68)
#14 0x0000000000f0a282 (anonymous 
namespace)::StringRefCheckerVisitor::VisitChildren(clang::Stmt*) 
(build-all-bbigcc/bin/clang-tidy+0xf0a282)
#15 0x0000000000f03fcf clang::StmtVisitorBase<std::add_pointer, 
(anonymous namespace)::StringRefCheckerVisitor, 
void>::Visit(clang::Stmt*) (.part.132) 
(build-all-bbigcc/bin/clang-tidy+0xf03fcf)

etc

I've only seen this when I compile clang-tidy with gcc 5.4.0, assertions 
on, with optimizations. Simply turning on debug info when compiling 
clang-tidy makes the crash go away so it's quite fragile.

Regards,
Mikael

On 12/4/18 5:01 PM, Bruno Ricci via cfe-commits wrote:
> Author: brunoricci
> Date: Tue Dec  4 08:01:24 2018
> New Revision: 348276
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=348276&view=rev
> Log:
> [AST][NFC] Make ArrayTypeTraitExpr non polymorphic
> 
> ArrayTypeTraitExpr is the only expression class which is polymorphic.
> As far as I can tell this is completely pointless.
> 
> Differential Revision: https://reviews.llvm.org/D55221
> 
> Reviewed By: aaron.ballman
> 
> 
> Modified:
>      cfe/trunk/include/clang/AST/ExprCXX.h
>      cfe/trunk/lib/AST/ExprCXX.cpp
> 
> Modified: cfe/trunk/include/clang/AST/ExprCXX.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ExprCXX.h?rev=348276&r1=348275&r2=348276&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/ExprCXX.h (original)
> +++ cfe/trunk/include/clang/AST/ExprCXX.h Tue Dec  4 08:01:24 2018
> @@ -2455,8 +2455,6 @@ class ArrayTypeTraitExpr : public Expr {
>     /// The type being queried.
>     TypeSourceInfo *QueriedType = nullptr;
>   
> -  virtual void anchor();
> -
>   public:
>     friend class ASTStmtReader;
>   
> @@ -2474,8 +2472,6 @@ public:
>     explicit ArrayTypeTraitExpr(EmptyShell Empty)
>         : Expr(ArrayTypeTraitExprClass, Empty), ATT(0) {}
>   
> -  virtual ~ArrayTypeTraitExpr() = default;
> -
>     SourceLocation getBeginLoc() const LLVM_READONLY { return Loc; }
>     SourceLocation getEndLoc() const LLVM_READONLY { return RParen; }
>   
> 
> Modified: cfe/trunk/lib/AST/ExprCXX.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprCXX.cpp?rev=348276&r1=348275&r2=348276&view=diff
> ==============================================================================
> --- cfe/trunk/lib/AST/ExprCXX.cpp (original)
> +++ cfe/trunk/lib/AST/ExprCXX.cpp Tue Dec  4 08:01:24 2018
> @@ -1443,5 +1443,3 @@ TypeTraitExpr *TypeTraitExpr::CreateDese
>     void *Mem = C.Allocate(totalSizeToAlloc<TypeSourceInfo *>(NumArgs));
>     return new (Mem) TypeTraitExpr(EmptyShell());
>   }
> -
> -void ArrayTypeTraitExpr::anchor() {}
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: reduced.c
Type: text/x-csrc
Size: 34246 bytes
Desc: reduced.c
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20181211/b4e9b243/attachment-0001.c>


More information about the cfe-commits mailing list