Mercurial > projects > ldc
comparison gen/statements.cpp @ 518:243485af6523
Prevent cast error for cast(void) around expression statements.
Fixes:
run/e/ExpressionStatement_10_A
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Sat, 16 Aug 2008 12:32:22 +0200 |
parents | 9534dbc70a56 |
children | bc0835cd3440 |
comparison
equal
deleted
inserted
replaced
517:9534dbc70a56 | 518:243485af6523 |
---|---|
120 DtoDwarfStopPoint(loc.linnum); | 120 DtoDwarfStopPoint(loc.linnum); |
121 | 121 |
122 if (exp) { | 122 if (exp) { |
123 if (global.params.llvmAnnotate) | 123 if (global.params.llvmAnnotate) |
124 DtoAnnotation(exp->toChars()); | 124 DtoAnnotation(exp->toChars()); |
125 elem* e = exp->toElem(p); | 125 elem* e; |
126 // a cast(void) around the expression is allowed, but doesn't require any code | |
127 if(exp->op == TOKcast && exp->type == Type::tvoid) { | |
128 CastExp* cexp = (CastExp*)exp; | |
129 e = cexp->e1->toElem(p); | |
130 } | |
131 else | |
132 e = exp->toElem(p); | |
126 delete e; | 133 delete e; |
127 } | 134 } |
128 /*elem* e = exp->toElem(p); | 135 /*elem* e = exp->toElem(p); |
129 p->buf.printf("%s", e->toChars()); | 136 p->buf.printf("%s", e->toChars()); |
130 delete e; | 137 delete e; |