From c1dd497ba240b2a20692826bda93547b436327b5 Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Tue, 28 May 2013 11:57:00 -0400 Subject: [PATCH] Don't splice in vector creation when optimizing vector-length. Closes PR13788. (cherry picked from commit d9264525bd823052cd456df0caa900eac2d87ed3) --- collects/tests/typed-racket/optimizer/tests/pr13788.rkt | 9 +++++++++ collects/typed-racket/optimizer/vector.rkt | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 collects/tests/typed-racket/optimizer/tests/pr13788.rkt diff --git a/collects/tests/typed-racket/optimizer/tests/pr13788.rkt b/collects/tests/typed-racket/optimizer/tests/pr13788.rkt new file mode 100644 index 0000000000..ee11b30f7e --- /dev/null +++ b/collects/tests/typed-racket/optimizer/tests/pr13788.rkt @@ -0,0 +1,9 @@ +#; +( +TR opt: pr13788.rkt 9:0 (vector-length (vector 1 2 3)) -- known-length vector-length +3 +) + +#lang typed/racket + +(vector-length (vector 1 2 3)) ; should not print the vector diff --git a/collects/typed-racket/optimizer/vector.rkt b/collects/typed-racket/optimizer/vector.rkt index d22fd48700..b83e32299e 100644 --- a/collects/typed-racket/optimizer/vector.rkt +++ b/collects/typed-racket/optimizer/vector.rkt @@ -44,7 +44,7 @@ (add-disappeared-use #'op) (match (type-of #'v) [(tc-result1: (HeterogeneousVector: es)) - #`(begin v.opt #,(length es))]))) ; v may have side effects + #`(let () v.opt #,(length es))]))) ; v may have side effects ;; we can optimize vector-length on all vectors. ;; since the program typechecked, we know the arg is a vector. ;; we can optimize no matter what.