Skip to content

Instantly share code, notes, and snippets.

@eholk
Created October 31, 2012 15:43
Show Gist options
  • Select an option

  • Save eholk/3987756 to your computer and use it in GitHub Desktop.

Select an option

Save eholk/3987756 to your computer and use it in GitHub Desktop.
;; original program
(module
(define (main)
(let ((x (vector-r r1 1 2 3 4))
(y (vector-r r2 1 2 3 4)))
(return 0))))
;; before infer-regions
(module (fn main () (() -> int) (input-regions ())
(output-regions ())
(let-region (mainregion_5)
(let ([v_3 (vec int) (make-vector-r int r1 (int 4))])
(begin
(set! (vector-ref int (var (vec int) v_3) (int 0)) (int 1))
(set! (vector-ref int (var (vec int) v_3) (int 1)) (int 2))
(set! (vector-ref int (var (vec int) v_3) (int 2)) (int 3))
(set! (vector-ref int (var (vec int) v_3) (int 3)) (int 4))
(let ([x_2 (vec int) (var (vec int) v_3)])
(let ([v_4 (vec int) (make-vector-r int r2 (int 4))])
(begin
(set! (vector-ref int (var (vec int) v_4) (int 0))
(int 1))
(set! (vector-ref int (var (vec int) v_4) (int 1))
(int 2))
(set! (vector-ref int (var (vec int) v_4) (int 2))
(int 3))
(set! (vector-ref int (var (vec int) v_4) (int 3))
(int 4))
(let ([y_1 (vec int) (var (vec int) v_4)])
(return (int 0)))))))))))
;; after infer-regions
(module (fn main () (() -> int) (input-regions ())
(output-regions ())
(let-region (_.0)
(let ([v_3 (vec r1 int) (make-vector int (int 4))])
(begin
(set! (vector-ref int (var (vec r1 int) v_3) (int 0))
(int 1))
(set! (vector-ref int (var (vec r1 int) v_3) (int 1))
(int 2))
(set! (vector-ref int (var (vec r1 int) v_3) (int 2))
(int 3))
(set! (vector-ref int (var (vec r1 int) v_3) (int 3))
(int 4))
(let ([x_2 (vec r1 int) (var (vec r1 int) v_3)])
(let ([v_4 (vec r2 int) (make-vector int (int 4))])
(begin
(set! (vector-ref int (var (vec r2 int) v_4) (int 0))
(int 1))
(set! (vector-ref int (var (vec r2 int) v_4) (int 1))
(int 2))
(set! (vector-ref int (var (vec r2 int) v_4) (int 2))
(int 3))
(set! (vector-ref int (var (vec r2 int) v_4) (int 3))
(int 4))
(let ([y_1 (vec r2 int) (var (vec r2 int) v_4)])
(return (int 0)))))))))))
;; after infer-regions, without the mistake.
(module (fn main () (() -> int) (input-regions ())
(output-regions ())
(let-region (mainregion_5)
(let ([v_3 (vec r1 int) (make-vector int (int 4))])
(begin
(set! (vector-ref int (var (vec r1 int) v_3) (int 0))
(int 1))
(set! (vector-ref int (var (vec r1 int) v_3) (int 1))
(int 2))
(set! (vector-ref int (var (vec r1 int) v_3) (int 2))
(int 3))
(set! (vector-ref int (var (vec r1 int) v_3) (int 3))
(int 4))
(let ([x_2 (vec r1 int) (var (vec r1 int) v_3)])
(let ([v_4 (vec r2 int) (make-vector int (int 4))])
(begin
(set! (vector-ref int (var (vec r2 int) v_4) (int 0))
(int 1))
(set! (vector-ref int (var (vec r2 int) v_4) (int 1))
(int 2))
(set! (vector-ref int (var (vec r2 int) v_4) (int 2))
(int 3))
(set! (vector-ref int (var (vec r2 int) v_4) (int 3))
(int 4))
(let ([y_1 (vec r2 int) (var (vec r2 int) v_4)])
(return (int 0)))))))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment