<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>