enhancementhelp wanted
Métricas do repositório
- Stars
- (61 estrelas)
- Métricas de merge de PR
- (Mesclagem média 1m) (1 fundiu PR em 30d)
Description
The description here depends on some type inference inprovements in #797
Reproduce
run with PIR_DEBUG=PrintPirAfterOpt
f <- function() {
a <- c(1,2,3)
names(a) <- c("one", "two", "three")
a['one'] + a['two']
}
f()
f()
f()
Observe that the result contains:
str$" %2.4 = LdConst [1] "one"
real$'<real'> %2.5 = Extract1_1D wed %2.3, %2.4, elided
there are two issues here:
- the index of "one" is computed at runtime
- the result is tagged, because it has an attribute (ie. a name)
Resolving issue (2) is probably a longterm goal, that needs many changes. but (1) should be approachable.
Possible Solution
Currently our type feedback records if a value has attributes (except dimension attrs of matrix) here. We could extend this to specifically record the names attribute.
If the names attribute is stable, we could speculate on it and compute the index at compile time.