Hey Richard,
I have another one for you.   I'm seeing the following assert:

Assertion failed: ((E->isGLValue() || E->getType()->isFunctionType() || 
E->getType()->isVoidType() || isa<CXXTemporaryObjectExpr>(E)) && "can't 
evaluate expression as an lvalue"), function EvaluateLValue, file 
/Users/mcrosier/llvm-clean/llvm/tools/clang/lib/AST/ExprConstant.cpp, 
line 913.
0  clang             0x000000010a8fe222 _ZL15PrintStackTracePv + 34
1  clang             0x000000010a8fe749 _ZL13SignalHandleri + 697
2  libsystem_c.dylib 0x00007fff8d815cfa _sigtramp + 26
3  libsystem_c.dylib 0x00007fff0000a63d _sigtramp + 18446744071335528797
4  clang             0x000000010a8fe476 abort + 22
5  clang             0x000000010a8fe435 __assert_rtn + 53
6  clang             0x0000000109e331b4 
_ZL14EvaluateLValuePKN5clang4ExprERN12_GLOBAL__N_16LValueERNS3_8EvalInfoE + 132
7  clang             0x0000000109e37028 (anonymous 
namespace)::PointerExprEvaluator::VisitCastExpr(clang::CastExpr const*) + 968
8  clang             0x0000000109e363c5 
clang::StmtVisitorBase<clang::make_const_ptr, (anonymous 
namespace)::PointerExprEvaluator, bool>::Visit(clang::Stmt const*) + 1013
9  clang             0x0000000109e3505c 
clang::StmtVisitorBase<clang::make_const_ptr, (anonymous 
namespace)::LValueExprEvaluator, bool>::Visit(clang::Stmt const*) + 1180
10 clang             0x0000000109e331ef 
_ZL14EvaluateLValuePKN5clang4ExprERN12_GLOBAL__N_16LValueERNS3_8EvalInfoE + 191
11 clang             0x0000000109e32400 
_ZL8EvaluateRN12_GLOBAL__N_17CCValueERNS_8EvalInfoEPKN5clang4ExprE + 128
12 clang             0x0000000109e321eb 
clang::Expr::EvaluateAsRValue(clang::Expr::EvalResult&, clang::ASTContext 
const&) const + 107
13 clang             0x000000010990010f (anonymous 
namespace)::GetExprRange(clang::ASTContext&, clang::Expr*, unsigned int) + 79
14 clang             0x00000001098fe93e (anonymous 
namespace)::CheckImplicitConversion(clang::Sema&, clang::Expr*, 
clang::QualType, clang::SourceLocation, bool*) + 3758
15 clang             0x00000001098fa78a (anonymous 
namespace)::AnalyzeImplicitConversions(clang::Sema&, clang::Expr*, 
clang::SourceLocation) + 106
16 clang             0x00000001098fadf0 (anonymous 
namespace)::AnalyzeImplicitConversions(clang::Sema&, clang::Expr*, 
clang::SourceLocation) + 1744
17 clang             0x0000000109a26e06 
clang::Sema::ActOnFinishFullExpr(clang::Expr*) + 134
18 clang             0x00000001098a75e8 
clang::Parser::ParseExprStatement(clang::ParsedAttributes&) + 296
19 clang             0x00000001098a6dce 
clang::Parser::ParseStatementOrDeclaration(clang::ASTOwningVector<clang::Stmt*, 
32u>&, bool) + 2142
20 clang             0x00000001098aa2f6 
clang::Parser::ParseForStatement(clang::ParsedAttributes&) + 2982
21 clang             0x00000001098a6ec6 
clang::Parser::ParseStatementOrDeclaration(clang::ASTOwningVector<clang::Stmt*, 
32u>&, bool) + 2390
22 clang             0x00000001098ac950 
clang::Parser::ParseCompoundStatementBody(bool) + 1344
23 clang             0x00000001098a69b0 
clang::Parser::ParseStatementOrDeclaration(clang::ASTOwningVector<clang::Stmt*, 
32u>&, bool) + 1088
24 clang             0x00000001098a8915 
clang::Parser::ParseIfStatement(clang::ParsedAttributes&) + 533
25 clang             0x00000001098a6e84 
clang::Parser::ParseStatementOrDeclaration(clang::ASTOwningVector<clang::Stmt*, 
32u>&, bool) + 2324
26 clang             0x00000001098ac950 
clang::Parser::ParseCompoundStatementBody(bool) + 1344
27 clang             0x00000001098a69b0 
clang::Parser::ParseStatementOrDeclaration(clang::ASTOwningVector<clang::Stmt*, 
32u>&, bool) + 1088
28 clang             0x00000001098aa2f6 
clang::Parser::ParseForStatement(clang::ParsedAttributes&) + 2982
29 clang             0x00000001098a6ec6 
clang::Parser::ParseStatementOrDeclaration(clang::ASTOwningVector<clang::Stmt*, 
32u>&, bool) + 2390
30 clang             0x00000001098ac950 
clang::Parser::ParseCompoundStatementBody(bool) + 1344
31 clang             0x00000001098a69b0 
clang::Parser::ParseStatementOrDeclaration(clang::ASTOwningVector<clang::Stmt*, 
32u>&, bool) + 1088
32 clang             0x00000001098aa2f6 
clang::Parser::ParseForStatement(clang::ParsedAttributes&) + 2982
33 clang             0x00000001098a6ec6 
clang::Parser::ParseStatementOrDeclaration(clang::ASTOwningVector<clang::Stmt*, 
32u>&, bool) + 2390
34 clang             0x00000001098ac950 
clang::Parser::ParseCompoundStatementBody(bool) + 1344
35 clang             0x00000001098adfbb 
clang::Parser::ParseFunctionStatementBody(clang::Decl*, 
clang::Parser::ParseScope&) + 171
36 clang             0x00000001098bb9b1 
clang::Parser::ParseFunctionDefinition(clang::Parser::ParsingDeclarator&, 
clang::Parser::ParsedTemplateInfo const&) + 2241
37 clang             0x000000010986db0c 
clang::Parser::ParseDeclGroup(clang::Parser::ParsingDeclSpec&, unsigned int, 
bool, clang::SourceLocation*, clang::Parser::ForRangeInit*) + 1020
38 clang             0x00000001098bab6a 
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsingDeclSpec&,
 clang::AccessSpecifier) + 858
39 clang             0x00000001098bad69 
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, 
clang::AccessSpecifier) + 393
40 clang             0x00000001098b9d1f 
clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
 clang::Parser::ParsingDeclSpec*) + 3295
41 clang             0x00000001098b8fc7 
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) + 247
42 clang             0x0000000109863abd clang::ParseAST(clang::Sema&, bool) + 
317
43 clang             0x0000000109832180 clang::CodeGenAction::ExecuteAction() + 
1040
44 clang             0x000000010963f42b 
clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 955
45 clang             0x00000001096296a5 
clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 2789
46 clang             0x0000000109621dd3 cc1_main(char const**, char const**, 
char const*, void*) + 5267
47 clang             0x0000000109625adf main + 687
48 clang             0x0000000109620934 start + 52
49 clang             0x0000000000000045 start + 18446744069257164613

Here's a reduced test case:

Attachment: joe.i
Description: Binary data


Reproduce with:
clang -Os -arch i386 -c joe.i -o /dev/null

Please take a moment to investigate.

Regards,
 Chad


On Oct 28, 2011, at 4:37 PM, Chad Rosier wrote:

> No problem.  Thanks for fixing promptly.
> 
>  Chad
> 
> On Oct 28, 2011, at 4:30 PM, Richard Smith wrote:
> 
>> Hi Chad,
>> 
>> Thanks for the excellent testcase! Fixed in r143250.
> 
> _______________________________________________
> cfe-commits mailing list
> [email protected]
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to