tra added a comment.

It appears that this change may result in clang crashing (e.g. it broke CUDA 
compilation: 
https://lab.llvm.org/buildbot/#/builders/55/builds/35047/steps/3/logs/stdio).

Reproducer:

  class {
    typedef __complex__ a;
    operator=(double b){c *= b} a c



  $bin/clang++ -cc1 -triple x86_64-unknown-linux-gnu -fsyntax-only -std=c++14 
-disable-llvm-passes -x c++ reproducer.cc
  reproducer.cc:2:11: warning: plain '_Complex' requires a type specifier; 
assuming '_Complex double'
    typedef __complex__ a;
            ^
                        double
  reproducer.cc:3:3: error: a type specifier is required for all declarations
    operator=(double b){c *= b} a c
    ^
  reproducer.cc:3:34: error: expected ';' at end of declaration list
    operator=(double b){c *= b} a c
                                   ^
                                   ;
  reproducer.cc:4:1: error: expected '}'
  ^
  reproducer.cc:1:7: note: to match this '{'
  class {
        ^
  clang++: work/llvm/repo/llvm/include/llvm/Support/Casting.h:566: 
decltype(auto) llvm::cast(const From &) [To = clang::BuiltinType, From = 
clang::QualType]: Assertion `isa<To>(Val) && "cast<Ty>() argument of 
incompatible type!"' failed.
  PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ 
and include the crash backtrace, preprocessed source, and associated run script.
  Stack dump:
  0.      Program arguments: bin/clang++ -cc1 -triple x86_64-unknown-linux-gnu 
-fsyntax-only -std=c++14 -disable-llvm-passes -x c++ reproducer.cc
  1.      reproducer.cc:3:29: current parser token '}'
  2.      reproducer.cc:1:1: parsing struct/union/class body '(anonymous)'
  3.      reproducer.cc:3:22: parsing function body '(anonymous 
class)::operator='
  4.      reproducer.cc:3:22: in compound statement ('{}')
   #0 0x000055ad5d7fe49a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) 
work/llvm/repo/llvm/lib/Support/Unix/Signals.inc:569:11
   #1 0x000055ad5d7fe64b PrintStackTraceSignalHandler(void*) 
work/llvm/repo/llvm/lib/Support/Unix/Signals.inc:636:1
   #2 0x000055ad5d7fcc96 llvm::sys::RunSignalHandlers() 
work/llvm/repo/llvm/lib/Support/Signals.cpp:103:5
   #3 0x000055ad5d7fed75 SignalHandler(int) 
work/llvm/repo/llvm/lib/Support/Unix/Signals.inc:407:1
   #4 0x00007f4b4e083200 __restore_rt 
(/lib/x86_64-linux-gnu/libpthread.so.0+0x12200)
   #5 0x00007f4b4daf28c1 raise ./signal/../sysdeps/unix/sysv/linux/raise.c:50:1
   #6 0x00007f4b4dadc546 abort ./stdlib/abort.c:81:7
   #7 0x00007f4b4dadc42f get_sysdep_segment_value ./intl/loadmsgcat.c:509:8
   #8 0x00007f4b4dadc42f _nl_load_domain ./intl/loadmsgcat.c:970:34
   #9 0x00007f4b4daeb242 (/lib/x86_64-linux-gnu/libc.so.6+0x31242)
  #10 0x000055ad5e2f39e8 decltype(auto) llvm::cast<clang::BuiltinType, 
clang::QualType>(clang::QualType const&) 
work/llvm/repo/llvm/include/llvm/Support/Casting.h:567:43
  #11 0x000055ad5e2f3929 clang::BuiltinType const* 
clang::Type::castAs<clang::BuiltinType>() const 
work/llvm/build/debug/tools/clang/include/clang/AST/TypeNodes.inc:86:1
  #12 0x000055ad62cfe279 
clang::ASTContext::getFloatTypeSemantics(clang::QualType) const 
work/llvm/repo/clang/lib/AST/ASTContext.cpp:1707:14
  #13 0x000055ad61e8ad61 unsupportedTypeConversion(clang::Sema const&, 
clang::QualType, clang::QualType) 
work/llvm/repo/clang/lib/Sema/SemaExpr.cpp:1256:29
  #14 0x000055ad61eb3961 
clang::Sema::CheckAssignmentConstraints(clang::QualType, 
clang::ActionResult<clang::Expr*, true>&, clang::CastKind&, bool) 
work/llvm/repo/clang/lib/Sema/SemaExpr.cpp:9619:7
  #15 0x000055ad61eb30c5 
clang::Sema::CheckAssignmentConstraints(clang::SourceLocation, clang::QualType, 
clang::QualType) work/llvm/repo/clang/lib/Sema/SemaExpr.cpp:9465:3
  #16 0x000055ad61ec565f clang::Sema::CheckAssignmentOperands(clang::Expr*, 
clang::ActionResult<clang::Expr*, true>&, clang::SourceLocation, 
clang::QualType, clang::BinaryOperatorKind) 
work/llvm/repo/clang/lib/Sema/SemaExpr.cpp:13919:12
  #17 0x000055ad61ea1903 clang::Sema::CreateBuiltinBinOp(clang::SourceLocation, 
clang::BinaryOperatorKind, clang::Expr*, clang::Expr*) 
work/llvm/repo/clang/lib/Sema/SemaExpr.cpp:14988:11
  #18 0x000055ad61ecaf02 clang::Sema::BuildBinOp(clang::Scope*, 
clang::SourceLocation, clang::BinaryOperatorKind, clang::Expr*, clang::Expr*) 
work/llvm/repo/clang/lib/Sema/SemaExpr.cpp:15511:10
  #19 0x000055ad61e8a180 clang::Sema::ActOnBinOp(clang::Scope*, 
clang::SourceLocation, clang::tok::TokenKind, clang::Expr*, clang::Expr*) 
work/llvm/repo/clang/lib/Sema/SemaExpr.cpp:15323:10
   


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D111509/new/

https://reviews.llvm.org/D111509

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to