From 428e71dc00798d49244088ba4a0c46ee11c79c61 Mon Sep 17 00:00:00 2001 From: Bernhard Schommer Date: Sat, 4 Apr 2015 11:48:56 +0200 Subject: Fixed missing unsigned compare for pointer in the arm backend. --- arm/Asmgenproof1.v | 6 ++++-- arm/Op.v | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) (limited to 'arm') diff --git a/arm/Asmgenproof1.v b/arm/Asmgenproof1.v index c859434b..f0a698eb 100644 --- a/arm/Asmgenproof1.v +++ b/arm/Asmgenproof1.v @@ -730,12 +730,14 @@ Proof. rewrite (int_ltu_not i i0). destruct (Int.ltu i i0); destruct (Int.eq i i0); reflexivity. destruct (Int.ltu i i0); reflexivity. (* int ptr *) - destruct (Int.eq i Int.zero) eqn:?; try discriminate. + destruct (Int.eq i Int.zero && + (Mem.valid_pointer m b0 (Int.unsigned i0) || Mem.valid_pointer m b0 (Int.unsigned i0 - 1))) eqn:?; try discriminate. destruct c; simpl in *; inv H1. rewrite Heqb1; reflexivity. rewrite Heqb1; reflexivity. (* ptr int *) - destruct (Int.eq i0 Int.zero) eqn:?; try discriminate. + destruct (Int.eq i0 Int.zero && + (Mem.valid_pointer m b0 (Int.unsigned i) || Mem.valid_pointer m b0 (Int.unsigned i - 1))) eqn:?; try discriminate. destruct c; simpl in *; inv H1. rewrite Heqb1; reflexivity. rewrite Heqb1; reflexivity. diff --git a/arm/Op.v b/arm/Op.v index bda99e3c..bbdcd123 100644 --- a/arm/Op.v +++ b/arm/Op.v @@ -707,7 +707,7 @@ Definition is_trivial_op (op: operation) : bool := Definition op_depends_on_memory (op: operation) : bool := match op with - | Ocmp (Ccompu _ | Ccompushift _ _) => true + | Ocmp (Ccompu _ | Ccompushift _ _| Ccompuimm _ _) => true | _ => false end. -- cgit