[llvm-bugs] [Bug 24568] New: Regression (crash) about write to read-only variable

via llvm-bugs llvm-bugs at lists.llvm.org
Tue Aug 25 07:00:27 PDT 2015


https://llvm.org/bugs/show_bug.cgi?id=24568

            Bug ID: 24568
           Summary: Regression (crash) about write to read-only variable
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
          Assignee: unassignedclangbugs at nondot.org
          Reporter: abramo.bagnara at bugseng.com
                CC: dgregor at apple.com, llvm-bugs at lists.llvm.org
    Classification: Unclassified

$ cat p.cc
int var;

const int& foo() {return var;}

typedef const int &Func();

Func& bar() {return foo;}

void test()
{
  bar()() = 0;
}
$ clang++-3.6 -cc1 p.cc
p.cc:11:11: error: read-only variable is not assignable
  bar()() = 0;
  ~~~~~~~ ^
1 error generated.
$ clang++-3.8 -cc1 p.cc
0  libLLVM-3.8.so.1 0x00007f3c978b3588
llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 56
1  libLLVM-3.8.so.1 0x00007f3c978b2926 llvm::sys::RunSignalHandlers() + 54
2  libLLVM-3.8.so.1 0x00007f3c978b2a7b
3  libpthread.so.0  0x00007f3c96226340
4  clang++-3.8      0x0000000000c40f4e
5  clang++-3.8      0x0000000000c41ce3
6  clang++-3.8      0x0000000000c5eb0a
clang::Sema::CheckAssignmentOperands(clang::Expr*,
clang::ActionResult<clang::Expr*, true>&, clang::SourceLocation,
clang::QualType) + 42
7  clang++-3.8      0x0000000000c5fa1c
clang::Sema::CreateBuiltinBinOp(clang::SourceLocation,
clang::BinaryOperatorKind, clang::Expr*, clang::Expr*) + 2364
8  clang++-3.8      0x0000000000c60b01 clang::Sema::BuildBinOp(clang::Scope*,
clang::SourceLocation, clang::BinaryOperatorKind, clang::Expr*, clang::Expr*) +
289
9  clang++-3.8      0x0000000000c60d45 clang::Sema::ActOnBinOp(clang::Scope*,
clang::SourceLocation, clang::tok::TokenKind, clang::Expr*, clang::Expr*) + 117
10 clang++-3.8      0x0000000000a735aa
clang::Parser::ParseRHSOfBinaryExpression(clang::ActionResult<clang::Expr*,
true>, clang::prec::Level) + 1562
11 clang++-3.8      0x0000000000a72f0f
clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) + 47
12 clang++-3.8      0x0000000000a72f79
clang::Parser::ParseExpression(clang::Parser::TypeCastState) + 9
13 clang++-3.8      0x0000000000aab166 clang::Parser::ParseExprStatement() + 54
14 clang++-3.8      0x0000000000aaa36f
clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,
32u>&, bool, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&)
+ 3151
15 clang++-3.8      0x0000000000aaa4f4
clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*,
32u>&, bool, clang::SourceLocation*) + 116
16 clang++-3.8      0x0000000000aa7181
clang::Parser::ParseCompoundStatementBody(bool) + 1601
17 clang++-3.8      0x0000000000aaecde
clang::Parser::ParseFunctionStatementBody(clang::Decl*,
clang::Parser::ParseScope&) + 190
18 clang++-3.8      0x0000000000a41c41
clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&,
clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) +
1281
19 clang++-3.8      0x0000000000a58118
clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, unsigned int,
clang::SourceLocation*, clang::Parser::ForRangeInit*) + 1976
20 clang++-3.8      0x0000000000a3dbf2
clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec&, clang::AccessSpecifier) + 274
21 clang++-3.8      0x0000000000a3e25e
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*, clang::AccessSpecifier) + 942
22 clang++-3.8      0x0000000000a43563
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) + 259
23 clang++-3.8      0x0000000000a43d4b
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 411
24 clang++-3.8      0x0000000000a3b863 clang::ParseAST(clang::Sema&, bool,
bool) + 371
25 clang++-3.8      0x00000000006d414e clang::FrontendAction::Execute() + 254
26 clang++-3.8      0x00000000006b19d8
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 280
27 clang++-3.8      0x0000000000699de4
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1892
28 clang++-3.8      0x0000000000692928 cc1_main(llvm::ArrayRef<char const*>,
char const*, void*) + 2104
29 clang++-3.8      0x0000000000690afc main + 5708
30 libc.so.6        0x00007f3c958dfec5 __libc_start_main + 245
31 clang++-3.8      0x0000000000691284
Stack dump:
0.    Program arguments: clang++-3.8 -cc1 p.cc 
1.    p.cc:11:14: current parser token ';'
2.    p.cc:10:1: parsing function body 'test'
3.    p.cc:10:1: in compound statement ('{}')
Segmentation fault

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20150825/2ba128ef/attachment-0001.html>


More information about the llvm-bugs mailing list