[LLVMbugs] [Bug 22881] New: Assertion when assigning to a variable in the OpenCL __constant address space

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Mar 12 06:14:44 PDT 2015


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

            Bug ID: 22881
           Summary: Assertion when assigning to a variable in the OpenCL
                    __constant address space
           Product: clang
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Frontend
          Assignee: unassignedclangbugs at nondot.org
          Reporter: fraser at codeplay.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Trying to compile this OpenCL program:

__constant int a = 1;

__kernel void foo() {
  a = 1;
}


results in an assertion inside clang.

lib/Sema/SemaExpr.cpp:8823: NonConstCaptureKind
isReferenceToNonConstCapture(clang::Sema&, clang::Expr*): Assertion
`E->isLValue() && E->getType().isConstQualified()' failed.


The full stack trace is here:

clang: /home/fraser/llvm-trunk/llvm/tools/clang/lib/Sema/SemaExpr.cpp:8823:
NonConstCaptureKind isReferenceToNonConstCapture(clang::Sema&, clang::Expr*):
Assertion `E->isLValue() && E->getType().isConstQualified()' failed.
#0 0x97960e2 llvm::sys::PrintStackTrace(llvm::raw_ostream&)
/home/fraser/llvm-trunk/llvm/lib/Support/Unix/Signals.inc:425:0
#1 0x97963d4 PrintStackTraceSignalHandler(void*)
/home/fraser/llvm-trunk/llvm/lib/Support/Unix/Signals.inc:482:0
#2 0x9795009 SignalHandler(int)
/home/fraser/llvm-trunk/llvm/lib/Support/Unix/Signals.inc:200:0
#3 0xf774bbc0 (linux-gate.so.1+0xbc0)
#4 0xf774bbf0 (linux-gate.so.1+0xbf0)
#5 0xf7387cc7 __GI_raise (/usr/lib32/libc.so.6+0x2bcc7)
#6 0xf7389309 __GI_abort (/usr/lib32/libc.so.6+0x2d309)
#7 0xf7380dd7 __assert_fail_base (/usr/lib32/libc.so.6+0x24dd7)
#8 0xf7380e5b (/usr/lib32/libc.so.6+0x24e5b)
#9 0xaa47ffa isReferenceToNonConstCapture(clang::Sema&, clang::Expr*)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Sema/SemaExpr.cpp:8823:0
#10 0xaa48258 CheckForModifiableLvalue(clang::Expr*, clang::SourceLocation,
clang::Sema&)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Sema/SemaExpr.cpp:8869:0
#11 0xaa489b5 clang::Sema::CheckAssignmentOperands(clang::Expr*,
clang::ActionResult<clang::Expr*, true>&, clang::SourceLocation,
clang::QualType)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Sema/SemaExpr.cpp:8988:0
#12 0xaa4c019 clang::Sema::CreateBuiltinBinOp(clang::SourceLocation,
clang::BinaryOperatorKind, clang::Expr*, clang::Expr*)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Sema/SemaExpr.cpp:9752:0
#13 0xaa4e61a clang::Sema::BuildBinOp(clang::Scope*, clang::SourceLocation,
clang::BinaryOperatorKind, clang::Expr*, clang::Expr*)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Sema/SemaExpr.cpp:10212:0
#14 0xaa4dfb8 clang::Sema::ActOnBinOp(clang::Scope*, clang::SourceLocation,
clang::tok::TokenKind, clang::Expr*, clang::Expr*)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Sema/SemaExpr.cpp:10114:0
#15 0xa6aa19f
clang::Parser::ParseRHSOfBinaryExpression(clang::ActionResult<clang::Expr*,
true>, clang::prec::Level)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/ParseExpr.cpp:416:0
#16 0xa6a91d9
clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/ParseExpr.cpp:170:0
#17 0xa6a8fc6 clang::Parser::ParseExpression(clang::Parser::TypeCastState)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/ParseExpr.cpp:121:0
#18 0xa6ddfca clang::Parser::ParseExprStatement()
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/ParseStmt.cpp:384:0
#19 0xa6dd911
clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,
32u>&, bool, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/ParseStmt.cpp:220:0
#20 0xa6dd20e
clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*,
32u>&, bool, clang::SourceLocation*)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/ParseStmt.cpp:107:0
#21 0xa6e005f clang::Parser::ParseCompoundStatementBody(bool)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/ParseStmt.cpp:958:0
#22 0xa6e3159 clang::Parser::ParseFunctionStatementBody(clang::Decl*,
clang::Parser::ParseScope&)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/ParseStmt.cpp:1873:0
#23 0xa6764d4 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&,
clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/Parser.cpp:1103:0
#24 0xa685b4f clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, unsigned
int, clang::SourceLocation*, clang::Parser::ForRangeInit*)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/ParseDecl.cpp:1689:0
#25 0xa6758a3
clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec&, clang::AccessSpecifier)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/Parser.cpp:893:0
#26 0xa675959
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*, clang::AccessSpecifier)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/Parser.cpp:909:0
#27 0xa675190
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/Parser.cpp:767:0
#28 0xa674862
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/Parser.cpp:569:0
#29 0xa66dd58 clang::ParseAST(clang::Sema&, bool, bool)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Parse/ParseAST.cpp:144:0
#30 0x9978e17 clang::ASTFrontendAction::ExecuteAction()
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Frontend/FrontendAction.cpp:538:0
#31 0x9978885 clang::FrontendAction::Execute()
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Frontend/FrontendAction.cpp:439:0
#32 0x99421e0 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp:806:0
#33 0x9a80cba clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
/home/fraser/llvm-trunk/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:222:0
#34 0x8ce1fc3 cc1_main(llvm::ArrayRef<char const*>, char const*, void*)
/home/fraser/llvm-trunk/llvm/tools/clang/tools/driver/cc1_main.cpp:110:0
#35 0x8cda9a7 ExecuteCC1Tool(llvm::ArrayRef<char const*>, llvm::StringRef)
/home/fraser/llvm-trunk/llvm/tools/clang/tools/driver/driver.cpp:369:0
#36 0x8cdaf4f main
/home/fraser/llvm-trunk/llvm/tools/clang/tools/driver/driver.cpp:415:0
#37 0xf737464e __libc_start_main (/usr/lib32/libc.so.6+0x1864e)
#38 0x8cd7d61 _start (/home/fraser/llvm-trunk/build/bin/clang-3.5+0x8cd7d61)
Stack dump:
0.      Program arguments: ./build/bin/clang -cc1 constant.cl 
1.      constant.cl:4:8: current parser token ';'
2.      constant.cl:3:21: parsing function body 'foo'
3.      constant.cl:3:21: in compound statement ('{}')

-- 
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/20150312/412c066a/attachment.html>


More information about the llvm-bugs mailing list