From luke-tierney at uiowa.edu  Thu Aug 24 18:10:58 2017
From: luke-tierney at uiowa.edu (luke-tierney at uiowa.edu)
Date: Thu, 24 Aug 2017 11:10:58 -0500 (CDT)
Subject: [Rd] loop compilation problem
In-Reply-To: <8EA1A94F-EB30-4AE0-A399-C9F73BC33EB5@oracle.com>
References: <8EA1A94F-EB30-4AE0-A399-C9F73BC33EB5@oracle.com>
Message-ID: <alpine.DEB.2.20.1708241110230.2616@luke-Latitude>

Thanks.

Here is a simplified version:

library(compiler)
zero <- 0
one <- 1
expr <- quote((z <- zero + one) + (z <- z + 1))
eval(compiler::compile(expr))

Sill fix shortly.

Best,

luke

On Thu, 24 Aug 2017, Lukas Stadler wrote:

> Hi!
>
> We?ve seen a problem with the compiler in specific cases of matrix updates:
>
>> { m <- matrix(1:4, 2) ; z <- 0; for(i in 1) { m[z <- z + 1,z <- z + 1] <- 99; } ; m }
>     [,1] [,2]
> [1,]    1    3
> [2,]    2   99
>
> Here, it modifies element [2,2], which is unexpected.
> It behaves correct without the loop:
>
>> { m <- matrix(1:4, 2) ; z <- 0; m[z <- z + 1,z <- z + 1] <- 99 ; m }
>     [,1] [,2]
> [1,]    1   99
> [2,]    2    4
>
> ? and without the jit:
>
>> enableJIT(0)
> [1] 3
>> { m <- matrix(1:4, 2) ; z <- 0; for(i in 1) { m[z <- z + 1,z <- z + 1] <- 99; } ; m }
>     [,1] [,2]
> [1,]    1   99
> [2,]    2    4
>
> I checked with "R Under development (unstable) (2017-08-23 r73116)?, and the problem is still there.
>
> - Lukas
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

-- 
Luke Tierney
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa                  Phone:             319-335-3386
Department of Statistics and        Fax:               319-335-3017
    Actuarial Science
241 Schaeffer Hall                  email:   luke-tierney at uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu


[Rd] loop compilation problem
luke-tierney at uiowa.edu