aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tccgen.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/tccgen.c b/tccgen.c
index 2a03fb6..3c45646 100644
--- a/tccgen.c
+++ b/tccgen.c
@@ -448,11 +448,14 @@ int gv(int rc)
- constant
- lvalue (need to dereference pointer)
- already a register, but not in the right class */
- if (r >= VT_CONST ||
- (vtop->r & VT_LVAL) ||
- !(reg_classes[r] & rc) ||
- ((vtop->type.t & VT_BTYPE) == VT_LLONG &&
- !(reg_classes[vtop->r2] & rc2))) {
+ if (r >= VT_CONST
+ || (vtop->r & VT_LVAL)
+ || !(reg_classes[r] & rc)
+#ifndef TCC_TARGET_X86_64
+ || ((vtop->type.t & VT_BTYPE) == VT_LLONG && !(reg_classes[vtop->r2] & rc2))
+#endif
+ )
+ {
r = get_reg(rc);
#ifndef TCC_TARGET_X86_64
if ((vtop->type.t & VT_BTYPE) == VT_LLONG) {