[llvm-bugs] [Bug 24774] New: assume_nonnull confused about addresses of @selectors: Assertion failed: (E->isGLValue() || E->getType()->isFunctionType() || E->getType()->isVoidType())

via llvm-bugs llvm-bugs at lists.llvm.org
Thu Sep 10 10:45:16 PDT 2015


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

            Bug ID: 24774
           Summary: assume_nonnull confused about addresses of @selectors:
                    Assertion failed: (E->isGLValue() ||
                    E->getType()->isFunctionType() ||
                    E->getType()->isVoidType())
           Product: clang
           Version: trunk
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: Frontend
          Assignee: unassignedclangbugs at nondot.org
          Reporter: nicolasweber at gmx.de
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

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

-- 
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/20150910/7464c59f/attachment.html>


More information about the llvm-bugs mailing list