From 724cd3752072cc16c3d528589faed7d8353af7c0 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. original 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 00000000..ee11b30f --- /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 d22fd487..b83e3229 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.