diff options
| author | Alain Frisch <alain@frisch.fr> | 2012-04-18 07:17:58 +0000 |
|---|---|---|
| committer | Alain Frisch <alain@frisch.fr> | 2012-04-18 07:17:58 +0000 |
| commit | 061ed556888aed2c84267caca6a6ab832eb2da46 (patch) | |
| tree | dd594255e06294b863e40a382af794adb60682aa /asmcomp/cmmgen.ml | |
| parent | 215e508e8bd53f7299ffd7d828794e2f4d4ba6f4 (diff) | |
| parent | 3930c2fd79e43bd02e3bc79d6b047f3aeab0effe (diff) | |
| download | ocaml-more_unboxing.tar.gz | |
Sync with trunk.more_unboxing
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/more_unboxing@12369 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'asmcomp/cmmgen.ml')
| -rw-r--r-- | asmcomp/cmmgen.ml | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/asmcomp/cmmgen.ml b/asmcomp/cmmgen.ml index fddf59862a..7d24f49700 100644 --- a/asmcomp/cmmgen.ml +++ b/asmcomp/cmmgen.ml @@ -78,7 +78,10 @@ let int_const n = (Nativeint.add (Nativeint.shift_left (Nativeint.of_int n) 1) 1n) let add_const c n = - if n = 0 then c else Cop(Caddi, [c; Cconst_int n]) + if n = 0 then c + else match c with + | Cconst_int x when no_overflow_add x n -> Cconst_int (x + n) + | c -> Cop(Caddi, [c; Cconst_int n]) let incr_int = function Cconst_int n when n < max_int -> Cconst_int(n+1) |
