aboutsummaryrefslogtreecommitdiffstats
path: root/x86/ConstpropOp.vp
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2018-02-04 17:27:33 +0100
committerXavier Leroy <xavier.leroy@inria.fr>2018-02-08 17:11:46 +0100
commit14aad5e8f330423427e63265dcb9bff45a3f55f3 (patch)
tree6bb84e8abfd2a8dced23388e712f909cda0cc16f /x86/ConstpropOp.vp
parentde0ff0bcb9df3dba542d22336e58e70ba8bda947 (diff)
downloadcompcert-14aad5e8f330423427e63265dcb9bff45a3f55f3.tar.gz
compcert-14aad5e8f330423427e63265dcb9bff45a3f55f3.zip
x86 ConstpropOp.addr_strength_reduction: always check validity of resulting addressing
In the original code, the addressing_valid check is skipped if we are in 32 bits, because we know the check is always true. This is correct but not obvious nor future-proof. (In the future we may want to make addressing_valid more strict.) This commit restructures ConstpropOp.addr_strength_reduction so that the addressing_valid check is always performed.
Diffstat (limited to 'x86/ConstpropOp.vp')
-rw-r--r--x86/ConstpropOp.vp10
1 files changed, 5 insertions, 5 deletions
diff --git a/x86/ConstpropOp.vp b/x86/ConstpropOp.vp
index be0cc09a..59719cf6 100644
--- a/x86/ConstpropOp.vp
+++ b/x86/ConstpropOp.vp
@@ -192,11 +192,11 @@ Nondetfunction addr_strength_reduction_64
Definition addr_strength_reduction
(addr: addressing) (args: list reg) (vl: list aval) :=
- if Archi.ptr64 then
- let addr_args' := addr_strength_reduction_64 addr args vl in
- if addressing_valid (fst addr_args') then addr_args' else (addr, args)
- else
- addr_strength_reduction_32 addr args vl.
+ let addr_args' :=
+ if Archi.ptr64
+ then addr_strength_reduction_64 addr args vl
+ else addr_strength_reduction_32 addr args vl in
+ if addressing_valid (fst addr_args') then addr_args' else (addr, args).
Definition make_addimm (n: int) (r: reg) :=
if Int.eq n Int.zero