diff options
Diffstat (limited to 'x86_64-gen.c')
| -rw-r--r-- | x86_64-gen.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/x86_64-gen.c b/x86_64-gen.c index 408bb91..b765806 100644 --- a/x86_64-gen.c +++ b/x86_64-gen.c @@ -349,6 +349,8 @@ void load(int r, SValue *sv) fr = sv->r; ft = sv->type.t & ~VT_DEFSIGN; fc = sv->c.i; + if (fc != sv->c.i && (fr & VT_SYM)) + tcc_error("64 bit addend in load"); ft &= ~(VT_VOLATILE | VT_CONSTANT); @@ -528,9 +530,11 @@ void store(int r, SValue *v) v = pe_getimport(v, &v2); #endif + fr = v->r & VT_VALMASK; ft = v->type.t; fc = v->c.i; - fr = v->r & VT_VALMASK; + if (fc != v->c.i && (fr & VT_SYM)) + tcc_error("64 bit addend in store"); ft &= ~(VT_VOLATILE | VT_CONSTANT); bt = ft & VT_BTYPE; |
