5c: handle unused results for cgen64()
This commit is contained in:
parent
67a9174ff8
commit
b2efac4687
1 changed files with 20 additions and 0 deletions
|
@ -923,6 +923,10 @@ cgen64(Node *n, Node *nn)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case OCAST:
|
case OCAST:
|
||||||
|
if(nn == Z){
|
||||||
|
nullwarn(l, Z);
|
||||||
|
goto Out;
|
||||||
|
}
|
||||||
if(typeilp[n->type->etype] && typev[l->type->etype]){
|
if(typeilp[n->type->etype] && typev[l->type->etype]){
|
||||||
if(l->op == ONAME || l->op == OINDREG)
|
if(l->op == ONAME || l->op == OINDREG)
|
||||||
nod0 = *l;
|
nod0 = *l;
|
||||||
|
@ -1004,6 +1008,10 @@ cgen64(Node *n, Node *nn)
|
||||||
goto Out;
|
goto Out;
|
||||||
|
|
||||||
case OASHL:
|
case OASHL:
|
||||||
|
if(nn == Z){
|
||||||
|
nullwarn(l, Z);
|
||||||
|
goto Out;
|
||||||
|
}
|
||||||
cgen(l, nn);
|
cgen(l, nn);
|
||||||
assert(r->op == OCONST);
|
assert(r->op == OCONST);
|
||||||
a = r->vconst & 63;
|
a = r->vconst & 63;
|
||||||
|
@ -1033,6 +1041,10 @@ cgen64(Node *n, Node *nn)
|
||||||
|
|
||||||
case OLSHR:
|
case OLSHR:
|
||||||
case OASHR:
|
case OASHR:
|
||||||
|
if(nn == Z){
|
||||||
|
nullwarn(l, Z);
|
||||||
|
goto Out;
|
||||||
|
}
|
||||||
cgen(l, nn);
|
cgen(l, nn);
|
||||||
assert(r->op == OCONST);
|
assert(r->op == OCONST);
|
||||||
a = r->vconst & 63;
|
a = r->vconst & 63;
|
||||||
|
@ -1062,6 +1074,10 @@ cgen64(Node *n, Node *nn)
|
||||||
case OAND:
|
case OAND:
|
||||||
case OXOR:
|
case OXOR:
|
||||||
case OOR:
|
case OOR:
|
||||||
|
if(nn == Z){
|
||||||
|
nullwarn(l, r);
|
||||||
|
goto Out;
|
||||||
|
}
|
||||||
ml = o == OADD && l->op == OLMUL && machcap(l);
|
ml = o == OADD && l->op == OLMUL && machcap(l);
|
||||||
mr = o == OADD && r->op == OLMUL && machcap(r);
|
mr = o == OADD && r->op == OLMUL && machcap(r);
|
||||||
if(ml && !mr){
|
if(ml && !mr){
|
||||||
|
@ -1133,6 +1149,10 @@ cgen64(Node *n, Node *nn)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(nn == Z){
|
||||||
|
nullwarn(l, r);
|
||||||
|
goto Out;
|
||||||
|
}
|
||||||
if(r->complex > l->complex) {
|
if(r->complex > l->complex) {
|
||||||
l = r;
|
l = r;
|
||||||
r = n->left;
|
r = n->left;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue