forked from OSchip/llvm-project
fix the more complex cases by actually codegen'ing the right expr :)
llvm-svn: 67219
This commit is contained in:
parent
28bcf1a429
commit
ab17fb2c98
|
@ -1024,7 +1024,7 @@ LValue CodeGenFunction::EmitCastLValue(const CastExpr *E) {
|
|||
|
||||
// Casts are only lvalues when the source and destination types are the same.
|
||||
llvm::Value *Temp = CreateTempAlloca(ConvertType(E->getType()));
|
||||
EmitAnyExpr(E, Temp, false);
|
||||
EmitAnyExpr(E->getSubExpr(), Temp, false);
|
||||
|
||||
return LValue::MakeAddr(Temp, E->getType().getCVRQualifiers(),
|
||||
getContext().getObjCGCAttrKind(E->getType()));
|
||||
|
|
|
@ -82,3 +82,9 @@ unsigned f1(void) {
|
|||
union f3_x {int x; float y;};
|
||||
int f3() {return ((union f3_x)2).x;}
|
||||
|
||||
union f4_y {int x; _Complex float y;};
|
||||
_Complex float f4() {return ((union f4_y)(_Complex float)2.0).y;}
|
||||
|
||||
struct f5_a { int a; } f5_a;
|
||||
union f5_z {int x; struct f5_a y;};
|
||||
struct f5_a f5() {return ((union f5_z)f5_a).y;}
|
||||
|
|
Loading…
Reference in New Issue