artiq/artiq/compiler
Jonathan Coates 5c85cef0c2
Allow indexing tuples in kernel code
This only allows for indexing with a constant value (e.g. x[0]).

While slices would be possible to implement, it's not clear how to
preserve type inference here. The current typing rule is:

  Γ ⊢ x : τ  Γ ⊢ a : Int  Γ ⊢ b : Int
  ------------------------------------
             Γ ⊢ x[a:b] : τ

However, tuples would require a different typing rule, and so we'd need
to defer type inference if τ is a tyvar. I'm not confident that this
won't change behaviour, so we leave as-is for now.

Signed-off-by: Jonathan Coates <jonathan.coates@oxionics.com>
2023-09-12 14:43:38 +01:00
..
algorithms compiler: do not associate SSA values with iodelay even when inlining. 2015-12-25 15:02:33 +08:00
analyses compiler: Constness is a validator, not analysis. 2017-06-09 07:29:31 +00:00
testbench master: store datasets in LMDB (#1743) 2023-04-24 17:34:30 +08:00
transforms Allow indexing tuples in kernel code 2023-09-12 14:43:38 +01:00
validators compiler: T{C -> External}Function, clarify docs [nfc] 2020-08-09 03:54:41 +01:00
__init__.py compiler: pull in dependencies in more finely grained way (fixes #181). 2015-11-24 17:32:04 +08:00
asttyped.py compiler: allow specifying per-function "fast-math" flags. 2016-03-28 21:44:08 +00:00
builtins.py compiler: Fix #1871 (array() breaks math functions) 2022-04-22 00:12:20 +01:00
embedding.py compiler: insert new lines into long synthesized code (#1986) 2022-11-23 12:10:32 +08:00
import_cache.py import_cache: make sure last line ends with \n as linecache does. Closes #547 2016-09-02 11:01:28 +08:00
iodelay.py compiler.iodelay: correctly fold max(0, [0, ]...). 2015-11-24 00:46:55 +08:00
ir.py compiler: fixed dead code eliminator 2022-01-26 07:16:54 +08:00
kernel.ld compiler: Add missing sections to kernel linker script 2022-11-24 16:57:31 +00:00
math_fns.py compiler: Provide libm special functions (erf, Bessel functions, …) 2020-11-11 19:15:30 +01:00
module.py test: fixed lit tests 2022-01-26 07:16:54 +08:00
prelude.py compiler: remove obsolete watchdog code (#1458) 2020-12-08 13:25:08 +08:00
targets.py compiler: skip demangling list of empty names 2023-06-09 13:24:10 +08:00
types.py syscall: lower nowrite to inaccessiblememonly 2021-09-10 13:25:12 +08:00