[cfe-dev] Fwd: CodeGen/statements.c: Don't understand test and its failure

Chris Lattner clattner at apple.com
Sat Oct 17 13:48:29 PDT 2009


On Oct 15, 2009, at 9:05 AM, John Thompson wrote:
> Sorry Chris, I meant to send this to the list.

The relevant part of the dump is:
>   (DeclStmt 029B7238 <line:23:1, col:23>
>     029B70A8 "long x =
>       (ImplicitCastExpr 029B71F0 <col:10, col:20> 'long' <Unknown>
>         (BinaryOperator 029B71A0 <col:10, col:20> 'int' '-'
>           (AddrLabelExpr 029B7110 <col:10, col:12> 'void *' bar  
> 029B7068)
>           (AddrLabelExpr 029B7158 <col:18, col:20> 'void *' baz  
> 029B7028)))"
>

This case should have been fixed by r84039.  Can you verify that it  
still fails with ToT?

-Chris


>
> ---------- Forwarded message ----------
> From: John Thompson <john.thompson.jtsoftware at gmail.com>
> Date: Thu, Oct 15, 2009 at 8:59 AM
> Subject: Re: [cfe-dev] CodeGen/statements.c: Don't understand test  
> and its failure
>
>
> This is the GNU address of a label extension.  Can you remove the  
> 'static' (which will allow it to parse) and paste what clang-cc -ast- 
> dump shows for that statement?
>
>
> Thanks.  Here it is:
>
> CodeGen/statements.c:5:6: warning: integer constant is too large for  
> its type
> case 111111111111111111111111111111111111111:
>      ^
> CodeGen/statements.c:5:6: warning: overflow converting case value to  
> switch condition type (11011968431394943431 to 18446744072755114439)
> CodeGen/statements.c:11:15: warning: non-void function 'test2'  
> should return a value
> int test2() { return; }
>               ^
> CodeGen/statements.c:12:16: warning: void function 'test3' should  
> not return a value
> void test3() { return 4; }
>                ^      ~
> CodeGen/statements.c:24:17: warning: incompatible pointer to integer  
> conversion initializing 'void *', expected 'long'
> static long y = &&baz;
>                 ^~~~~
> CodeGen/statements.c:28:10: warning: incompatible integer to pointer  
> conversion passing 'long', expected 'void *'
>     goto *y;
>          ^~
> CodeGen/statements.c:30:8: warning: incompatible integer to pointer  
> conversion passing 'long', expected 'void *'
>   goto *x;
>        ^~
> CodeGen/statements.c:25:3: warning: expression result unused
>   &&bing;
>   ^~~~~~
> CodeGen/statements.c:26:3: warning: expression result unused
>   &&blong;
>   ^~~~~~~
> CodeGen/statements.c:34:31: warning: incompatible integer to pointer  
> conversion passing 'long long', expected 'void *'
> int test5(long long b) { goto *b; }
>                               ^~
> typedef char *__builtin_va_list;
> void test1(int x)
> int bar();
> int test2()
>
> void test3()
>
> void test4()
>
> int test5(long long b)
>
> (CompoundStmt 029AF2D8 <CodeGen/statements.c:3:19, line:8:1>
>   (SwitchStmt 029AEC98 <line:4:1, line:7:1>
>     (DeclRefExpr 029B0570 <line:4:9> 'int' ParmVar='x' 029B0508)
>     (CompoundStmt 029AF120 <col:12, line:7:1>
>       (CaseStmt 029AEE48 <line:5:1, line:6:5>
>         (CallExpr 029AF0A8 <col:1, col:5> 'int'
>           (ImplicitCastExpr 029AF060 <col:1> 'int (*)()'  
> <FunctionToPointerDecay>
>             (DeclRefExpr 029AEFD0 <col:1> 'int ()'  
> FunctionDecl='bar' 029AEF40)))
>         (ImplicitCastExpr 029AF1E8 <line:5:6> 'int' <Unknown>
>           (IntegerLiteral 029AEDF0 <col:6> 'unsigned long long'  
> 11011968431394943431))
>         <<<NULL>>>))))
> (CompoundStmt 029AF3F0 <CodeGen/statements.c:11:13, col:23>
>   (ReturnStmt 029AF3B0 <col:15>))
> (CompoundStmt 029AF638 <CodeGen/statements.c:12:14, col:26>
>   (ReturnStmt 029AF5F8 <col:16, col:23>
>     (IntegerLiteral 029AF5A0 <col:23> 'int' 4)))
> (CompoundStmt 029AF740 <CodeGen/statements.c:15:14, line:31:1>
>   (LabelStmt 029B7068 <line:16:1, line:20:2> 'bar'
>     (LabelStmt 029B7028 <line:17:1, line:20:2> 'baz'
>       (LabelStmt 029AF7C8 <line:18:1, line:20:2> 'blong'
>         (LabelStmt 029AF788 <line:19:1, line:20:2> 'bing'
>           (NullStmt 029AF230 <col:2>)))))
>   (DeclStmt 029B7238 <line:23:1, col:23>
>     029B70A8 "long x =
>       (ImplicitCastExpr 029B71F0 <col:10, col:20> 'long' <Unknown>
>         (BinaryOperator 029B71A0 <col:10, col:20> 'int' '-'
>           (AddrLabelExpr 029B7110 <col:10, col:12> 'void *' bar  
> 029B7068)
>           (AddrLabelExpr 029B7158 <col:18, col:20> 'void *' baz  
> 029B7028)))"
>   (DeclStmt 029B7370 <line:24:1, col:22>
>     029B7278 "static long y =
>       (ImplicitCastExpr 029B7328 <col:17, col:19> 'long' <Unknown>
>         (AddrLabelExpr 029B72E0 <col:17, col:19> 'void *' baz  
> 029B7028))"
>   (AddrLabelExpr 029B73B0 <line:25:3, col:5> 'void *' bing 029AF788)
>   (AddrLabelExpr 029B73F8 <line:26:3, col:5> 'void *' blong 029AF7C8)
>   (IfStmt 029B7558 <line:27:3, line:28:11>
>     (DeclRefExpr 029B7440 <line:27:7> 'long' Var='y' 029B7278)
>     (IndirectGotoStmt 029B7518 <line:28:5, col:11>
>       (ImplicitCastExpr 029B74D0 <col:11> 'void *' <Unknown>
>         (DeclRefExpr 029B7488 <col:11> 'long' Var='y' 029B7278)))
>     <<<NULL>>>)
>   (IndirectGotoStmt 029B7630 <line:30:3, col:9>
>     (ImplicitCastExpr 029B75E8 <col:9> 'void *' <Unknown>
>       (DeclRefExpr 029B75A0 <col:9> 'long' Var='x' 029B70A8))))
> (CompoundStmt 029AE428 <CodeGen/statements.c:34:24, col:35>
>   (IndirectGotoStmt 029B7918 <col:26, col:32>
>     (ImplicitCastExpr 029B78D0 <col:32> 'void *' <Unknown>
>       (DeclRefExpr 029B7888 <col:32> 'long long' ParmVar='b'  
> 029B7708))))
> 10 diagnostics generated.
>
>
>
>
> -- 
> John Thompson
> John.Thompson.JTSoftware at gmail.com
>
>
>
>
>
>
> -- 
> John Thompson
> John.Thompson.JTSoftware at gmail.com
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20091017/eb61e853/attachment.html>


More information about the cfe-dev mailing list