<html>
<head>
<base href="https://llvm.org/bugs/" />
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW --- - assume_nonnull confused about addresses of @selectors: Assertion failed: (E->isGLValue() || E->getType()->isFunctionType() || E->getType()->isVoidType())"
href="https://llvm.org/bugs/show_bug.cgi?id=24774">24774</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>assume_nonnull confused about addresses of @selectors: Assertion failed: (E->isGLValue() || E->getType()->isFunctionType() || E->getType()->isVoidType())
</td>
</tr>
<tr>
<th>Product</th>
<td>clang
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>Frontend
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedclangbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>nicolasweber@gmx.de
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org
</td>
</tr>
<tr>
<th>Classification</th>
<td>Unclassified
</td>
</tr></table>
<p>
<div>
<pre>Reduced:
ummer:GTMWindowSheetController-9369d4 thakis$ cat
GTMWindowSheetController-9369d4.m
#define NS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")
#define NS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end")
NS_ASSUME_NONNULL_BEGIN
@interface Foo
- (void)setArgument:(void *)argumentLocation;
@end
NS_ASSUME_NONNULL_END
@interface GTMWindowSheetController
@end
@implementation GTMWindowSheetController
- (void)beginSystemSheet:(Foo*)invocation {
[invocation setArgument:&@selector(foo:)];
}
@end
hummer:GTMWindowSheetController-9369d4 thakis$
/Users/thakis/src/llvm-build/bin/clang -c GTMWindowSheetController-9369d4.m
Assertion failed: (E->isGLValue() || E->getType()->isFunctionType() ||
E->getType()->isVoidType()), function EvaluateLValue, file
/Users/thakis/src/llvm-svn/tools/clang/lib/AST/ExprConstant.cpp, line 4565.
0 clang-3.8 0x0000000103aaa909
llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 57
1 clang-3.8 0x0000000103aa9e26 llvm::sys::RunSignalHandlers() +
70
2 clang-3.8 0x0000000103aab485 SignalHandler(int) + 645
3 libsystem_platform.dylib 0x00007fff94722f1a _sigtramp + 26
4 libsystem_platform.dylib 0x70632e746e617473 _sigtramp + 3656336755
5 clang-3.8 0x0000000103aab156 abort + 22
6 clang-3.8 0x0000000103aab131 __assert_rtn + 81
7 clang-3.8 0x0000000104ef0e46 EvaluateLValue(clang::Expr
const*, (anonymous namespace)::LValue&, (anonymous namespace)::EvalInfo&) + 230
8 clang-3.8 0x0000000104f20900
clang::StmtVisitorBase<clang::make_const_ptr, (anonymous
namespace)::PointerExprEvaluator, bool>::Visit(clang::Stmt const*) + 368
9 clang-3.8 0x0000000104f2360f (anonymous
namespace)::PointerExprEvaluator::VisitCastExpr(clang::CastExpr const*) + 463
10 clang-3.8 0x0000000104f20ecc
clang::StmtVisitorBase<clang::make_const_ptr, (anonymous
namespace)::PointerExprEvaluator, bool>::Visit(clang::Stmt const*) + 1852
11 clang-3.8 0x0000000104ef484c Evaluate(clang::APValue&,
(anonymous namespace)::EvalInfo&, clang::Expr const*) + 828
12 clang-3.8 0x0000000104ef0591 EvaluateAsRValue((anonymous
namespace)::EvalInfo&, clang::Expr const*, clang::APValue&) + 97
13 clang-3.8 0x0000000104ef031f
clang::Expr::EvaluateAsRValue(clang::Expr::EvalResult&, clang::ASTContext
const&) const + 367
14 clang-3.8 0x0000000104ef06ae
clang::Expr::EvaluateAsBooleanCondition(bool&, clang::ASTContext const&) const
+ 62
15 clang-3.8 0x0000000104721efd CheckNonNullExpr(clang::Sema&,
clang::Expr const*) + 349
16 clang-3.8 0x0000000104717a1f
clang::Sema::checkCall(clang::NamedDecl*, clang::FunctionProtoType const*,
llvm::ArrayRef<clang::Expr const*>, bool, clang::SourceLocation,
clang::SourceRange, clang::Sema::VariadicCallType) + 2767
17 clang-3.8 0x000000010471c932
clang::Sema::CheckObjCMethodCall(clang::ObjCMethodDecl*, clang::SourceLocation,
llvm::ArrayRef<clang::Expr const*>) + 98
18 clang-3.8 0x000000010495cf96
clang::Sema::CheckMessageArgumentTypes(clang::QualType,
llvm::MutableArrayRef<clang::Expr*>, clang::Selector,
llvm::ArrayRef<clang::SourceLocation>, clang::ObjCMethodDecl*, bool, bool,
clang::SourceLocation, clang::SourceLocation, clang::SourceRange,
clang::QualType&, clang::ExprValueKind&) + 3062
19 clang-3.8 0x000000010496162b
clang::Sema::BuildInstanceMessage(clang::Expr*, clang::QualType,
clang::SourceLocation, clang::Selector, clang::ObjCMethodDecl*,
clang::SourceLocation, llvm::ArrayRef<clang::SourceLocation>,
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>, bool) + 4395
20 clang-3.8 0x0000000104964b78
clang::Sema::ActOnInstanceMessage(clang::Scope*, clang::Expr*, clang::Selector,
clang::SourceLocation, llvm::ArrayRef<clang::SourceLocation>,
clang::SourceLocation, llvm::MutableArrayRef<clang::Expr*>) + 520
21 clang-3.8 0x000000010451f066
clang::Parser::ParseObjCMessageExpressionBody(clang::SourceLocation,
clang::SourceLocation, clang::OpaquePtr<clang::QualType>, clang::Expr*) + 3030
22 clang-3.8 0x000000010451e411
clang::Parser::ParseObjCMessageExpression() + 1009
23 clang-3.8 0x00000001044f0ee1
clang::Parser::ParseCastExpression(bool, bool, bool&,
clang::Parser::TypeCastState) + 5937
24 clang-3.8 0x00000001044ec966
clang::Parser::ParseAssignmentExpression(clang::Parser::TypeCastState) + 134
25 clang-3.8 0x00000001044ec8be
clang::Parser::ParseExpression(clang::Parser::TypeCastState) + 14
26 clang-3.8 0x00000001045317c3
clang::Parser::ParseExprStatement() + 51
27 clang-3.8 0x0000000104530f2a
clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,
32u>&, bool, clang::SourceLocation*, clang::Parser::ParsedAttributesWithRange&)
+ 3418
28 clang-3.8 0x000000010453013b
clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*,
32u>&, bool, clang::SourceLocation*) + 155
29 clang-3.8 0x000000010453817f
clang::Parser::ParseCompoundStatementBody(bool) + 1807
30 clang-3.8 0x00000001045389f2
clang::Parser::ParseFunctionStatementBody(clang::Decl*,
clang::Parser::ParseScope&) + 194
31 clang-3.8 0x0000000104519556
clang::Parser::ParseLexedObjCMethodDefs(clang::Parser::LexedMethod&, bool) +
342
32 clang-3.8 0x0000000104511ace
clang::Parser::ObjCImplParsingDataRAII::finish(clang::SourceRange) + 94
33 clang-3.8 0x0000000104510cdd
clang::Parser::ParseObjCAtEndDeclaration(clang::SourceRange) + 141
34 clang-3.8 0x000000010454cd2e
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) + 1182
35 clang-3.8 0x00000001045107b0
clang::Parser::ParseObjCAtImplementationDeclaration(clang::SourceLocation) +
2704
36 clang-3.8 0x000000010454cd2e
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
clang::ParsingDeclSpec*) + 1182
37 clang-3.8 0x000000010454c75d
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 525
38 clang-3.8 0x00000001044aff75 clang::ParseAST(clang::Sema&,
bool, bool) + 501
39 clang-3.8 0x0000000103f54c0b clang::FrontendAction::Execute()
+ 75
40 clang-3.8 0x0000000103f1ccbb
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 843
41 clang-3.8 0x0000000103f97a21
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 4033
42 clang-3.8 0x000000010287c532 cc1_main(llvm::ArrayRef<char
const*>, char const*, void*) + 1474
43 clang-3.8 0x000000010287ad80 main + 12560
44 libdyld.dylib 0x00007fff90bc65c9 start + 1
45 libdyld.dylib 0x0000000000000031 start + 1866701417</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>