forked from OSchip/llvm-project
parent
e0be0dfced
commit
e541ea3a61
|
@ -1108,6 +1108,12 @@ RValue CodeGenFunction::EmitCallExpr(const CallExpr *E) {
|
|||
}
|
||||
|
||||
LValue CodeGenFunction::EmitBinaryOperatorLValue(const BinaryOperator *E) {
|
||||
// Comma expressions just emit their LHS then their RHS as an l-value.
|
||||
if (E->getOpcode() == BinaryOperator::Comma) {
|
||||
EmitAnyExpr(E->getLHS());
|
||||
return EmitLValue(E->getRHS());
|
||||
}
|
||||
|
||||
// Can only get l-value for binary operator expressions which are a
|
||||
// simple assignment of aggregate type.
|
||||
if (E->getOpcode() != BinaryOperator::Assign)
|
||||
|
|
|
@ -104,3 +104,15 @@ void f7() {
|
|||
int f8() {
|
||||
return ({ foo(); }).Y;
|
||||
}
|
||||
|
||||
// rdar://6880558
|
||||
struct S;
|
||||
struct C {
|
||||
int i;
|
||||
struct S *tab[];
|
||||
};
|
||||
struct S { struct C c; };
|
||||
void f9(struct S *x) {
|
||||
foo(((void)1, x->c).tab[0]);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue