Performs one constant propagation pass. Carefully examine the results after running this function!

opt_constant_propagation(texts, in_fun_call = FALSE)

Arguments

texts

A list of character vectors with the code to optimize.

in_fun_call

A logical indicating whether it should propagate in function calls. Note: this could change the semantics of the program.

Examples

code <- paste( "i <- 170", "x <- -170", "y <- x + 124", "z <- i - 124", sep = "\n" ) cat(opt_constant_propagation(list(code))$codes[[1]])
#> i <- 170 #> x <- -170 #> y <- -170 + 124 #> z <- 170 - 124
hemisphere_vol <- paste( "pi <- 3.141593 ", "radius <- 25 ", "hemis_vol <- 2/3 * pi * radius ^ 3 ", sep = "\n" ) cat(opt_constant_propagation(list(hemisphere_vol))$codes[[1]])
#> pi <- 3.141593 #> radius <- 25 #> hemis_vol <- 2/3 * 3.141593 * 25 ^ 3