whitequark
e67705dc27
compiler.iodelay: fix typo in BinOp.__eq__.
2015-11-17 00:51:37 +03:00
whitequark
629aacec09
compiler.iodelay: add forgotten Conv.__eq__.
2015-11-17 00:51:22 +03:00
whitequark
fd46690cf5
compiler: make IR dumps vastly more readable.
2015-11-17 00:23:34 +03:00
whitequark
eefa9e2ea6
transforms.inferencer: fix typo.
2015-11-17 00:02:15 +03:00
whitequark
c8cfa7c7bd
compiler: give suggestions in diagnostics for unbound variable.
...
This uses the Jaro-Winkler edit distance, which seemed like the best
fit for identifiers, even though it is intended for people's names.
2015-11-15 23:09:40 +03:00
whitequark
9670939ca6
compiler.analyses.domination: fix PostDominatorTree.
2015-11-09 12:49:27 +03:00
whitequark
19fae9181c
compiler.analyses.domination: implement new dominator tree algorithm.
2015-11-09 11:51:54 +03:00
whitequark
a0c6f75f9b
compiler.types: fix obsolete iodelay references.
2015-11-07 15:14:19 +03:00
whitequark
3a1b77ae6b
analyses.domination: add PostDominatorTree.
2015-11-01 09:49:39 +03:00
whitequark
b91ffa1b38
ir: fix default argument fiasco.
2015-10-14 17:02:59 +03:00
whitequark
5d64df829e
transforms.artiq_ir_generator: fix devirtualized call annotation.
2015-10-14 16:12:00 +03:00
whitequark
bd5b324fc2
Merge branch 'master' into new-py2llvm
2015-10-13 19:24:45 +03:00
whitequark
32ce33a1f9
transforms.artiq_ir_generator: emit ir.Parallel for with parallel:.
2015-10-09 03:10:39 +03:00
whitequark
48f1f48f09
transforms.artiq_ir_generator: devirtualize method calls.
2015-10-09 02:27:52 +03:00
whitequark
0bb793199f
transforms.artiq_ir_generator: devirtualize closure calls.
2015-10-09 01:32:27 +03:00
whitequark
6922bd5638
analyses.devirtualization: look up functions in outer scopes.
2015-10-09 01:32:05 +03:00
whitequark
844d37ff18
compiler.testbench.embedding: allow compiling only.
2015-10-09 01:24:44 +03:00
whitequark
7bcba52d6a
compiler.embedding: fix loc.
2015-10-09 00:53:14 +03:00
whitequark
7043b333a7
transforms.devirtualizer → analyses.devirtualization.
2015-10-09 00:29:31 +03:00
whitequark
962dd9de13
transforms.devirtualizer.MethodResolver: implement.
2015-10-07 22:33:08 +03:00
whitequark
6ac82e1439
transforms.devirtualizer.FunctionResolver: implement.
2015-10-07 22:33:00 +03:00
whitequark
42b0089a4c
transforms.asttyped_rewriter: simplify.
2015-10-07 22:03:24 +03:00
whitequark
2ca84f9fea
Highlight source range in IR dumps using colors.
2015-10-04 02:11:17 +03:00
whitequark
7a6fc3983c
Make delay component of function type unifyable.
2015-09-30 18:41:14 +03:00
whitequark
60c985bf0b
Remove debug print.
2015-09-27 17:55:19 +03:00
whitequark
867a0689ad
transforms.Inferencer: narrow range() element type.
2015-09-02 17:55:48 -06:00
whitequark
b971cc8cdf
compiler.{iodelay,transforms.iodelay_estimator}: implement.
2015-09-02 17:55:48 -06:00
whitequark
995245b786
compiler.embedding: default RPC return annotation is -> TNone.
2015-09-01 08:38:38 -06:00
whitequark
156779007a
LLVMIRGenerator: implement quoting of lists.
2015-08-31 23:33:33 -06:00
whitequark
956c1985b1
ARTIQIRGenerator: evaluate SubscriptT index in non-assignment context.
2015-08-31 23:33:04 -06:00
whitequark
b03efbc94d
compiler.embedding: maintain correct column numbers in debug info.
2015-08-31 22:18:49 -06:00
whitequark
3ca5967cea
LLVMIRGenerator: don't map sret LLVM argument to any ARTIQ arguments.
2015-08-31 14:02:02 -06:00
whitequark
5e0ec3a6ea
ARTIQIRGenerator: fix keyword/optional argument codegen in calls.
2015-08-31 13:42:36 -06:00
whitequark
501ba912c2
Implement {delay,now,at}{,_mu} and {mu,seconds}_to_{seconds,mu}.
2015-08-31 09:59:33 -06:00
whitequark
5151adb9a8
compiler.targets: correctly pass CPU features to LLVM.
2015-08-30 16:56:58 -05:00
whitequark
b263a55b1a
compiler.testbench.perf_embedding: implement.
2015-08-30 12:23:16 -05:00
whitequark
2124ff9e91
Fix tests.
2015-08-28 05:28:58 -05:00
whitequark
37811f690b
ARTIQIRGenerator: support comparisons against None.
2015-08-28 05:14:52 -05:00
whitequark
bcba86de7e
compiler.embedding: handle errors during initial kernel call.
2015-08-28 05:14:06 -05:00
whitequark
b35051cb08
compiler.embedding: handle calls into lambdas (poorly).
2015-08-28 05:13:38 -05:00
whitequark
c621b1f275
compiler: handle language.core.int during embedding.
2015-08-28 03:24:15 -05:00
whitequark
83ebb999c8
transforms.Inferencer: improve attribute unification diagnostic.
2015-08-28 03:23:15 -05:00
whitequark
9fd25a1cc4
LLVMIRGenerator: fix syscall emission.
2015-08-28 03:03:12 -05:00
whitequark
6a29775bf0
compiler.types.Type: more useful __str__.
2015-08-28 02:53:12 -05:00
whitequark
ac92aabce1
Fix default argument fiasco.
2015-08-28 02:50:40 -05:00
whitequark
edf33f1643
compiler.targets: dump module signature with ARTIQ_DUMP_SIG=1.
2015-08-28 02:22:35 -05:00
whitequark
677cc69643
compiler.embedding: actually use qualified name when embedding methods.
...
Previous commit 6b55e3b
only did this for embedded types.
2015-08-28 02:22:16 -05:00
whitequark
9936768603
ARTIQIRGenerator: fix non-nullary method calls.
2015-08-28 02:11:05 -05:00
whitequark
d473d58b41
artiq_{compile,run}: adapt to new compiler.
2015-08-28 01:43:46 -05:00
whitequark
6b55e3bd80
compiler.embedding: use qualified name when embedding methods.
2015-08-28 01:14:19 -05:00
whitequark
13e612c11b
Fix tests.
2015-08-28 00:51:31 -05:00
whitequark
7c1abb25ec
compiler.embedding: test all diagnostics.
...
Also, unify and improve diagnostic messages.
2015-08-28 00:47:28 -05:00
whitequark
c21387dc09
compiler.embedding: support calling methods marked as @kernel.
2015-08-27 19:46:50 -05:00
whitequark
d0fd61866f
compiler.types: print fields of instance types.
2015-08-27 17:25:01 -05:00
whitequark
9791cbba4d
compiler.embedding: use typedtree hash to iterate inference to fixpoint.
2015-08-27 17:04:28 -05:00
whitequark
a3284f8978
compiler.types: fix module paths in __repr__.
2015-08-27 15:46:36 -05:00
whitequark
84e32db622
LLVMIRGenerator: handle self-referential class types.
2015-08-27 15:40:46 -05:00
whitequark
71ebe1778d
LLVMIRGenerator: remove debug print.
2015-08-27 15:40:15 -05:00
whitequark
f7c8625f61
compiler.embedding: support calling methods via RPC as well.
2015-08-27 05:56:46 -05:00
whitequark
c62b16d5e1
compiler.embedding: support RPC functions as host attribute values.
2015-08-27 05:53:18 -05:00
whitequark
04bd2421ad
compiler.embedding: dedent kernel functions before parsing.
2015-08-27 05:44:56 -05:00
whitequark
cb225269ff
Allow accessing attributes of embedded host objects.
2015-08-27 05:01:04 -05:00
whitequark
422208a0e9
Fix copy-paste error.
2015-08-25 22:05:34 -07:00
whitequark
9b9fa1ab7c
Allow embedding and RPC sending host objects.
2015-08-25 21:56:01 -07:00
whitequark
526d7c4e46
Fix a typo.
2015-08-22 14:01:55 -07:00
whitequark
a557445e05
LocalAccessValidator: assume variables with "$" in name are internal.
...
Internal variables are assumed to be scoped correctly
(including not being accessed uninitialized).
This was changed from "." because artiq.compiler.embedding uses
"." in module prefix of function names.
2015-08-22 13:56:17 -07:00
whitequark
0e26cfb66e
LocalAccessValidator: relax restrictions to accept def f(); def g().
2015-08-22 13:31:09 -07:00
whitequark
b39e76ae28
Remove debug print.
2015-08-22 12:22:26 -07:00
whitequark
27a697920a
LLVMIRGenerator: use sret when returning large structures.
2015-08-19 15:06:03 -07:00
whitequark
afc3f36104
ARTIQIRGenerator: fix polymorphic print on closures.
2015-08-19 12:37:22 -07:00
whitequark
53b4d87647
LLVMIRGenerator: attach debug metadata to all emitted LLVM instructions.
2015-08-19 12:18:20 -07:00
whitequark
51c591f01a
Unbreak tests.
2015-08-18 22:44:09 -07:00
whitequark
6c8de9b6d4
Implement methods.
2015-08-18 22:39:22 -07:00
whitequark
94a2d5f5fa
Implement class attribute access through instances.
2015-08-15 11:07:54 -04:00
whitequark
00efc8c636
Implement class definitions and class attribute access.
2015-08-15 09:45:16 -04:00
whitequark
786fde827a
Unbreak tests.
2015-08-11 00:41:31 +03:00
whitequark
62e6f8a03d
compiler.embedding.Stitcher: refactor.
2015-08-10 20:26:07 +03:00
whitequark
c72267ecf5
Implement syscalls for the new compiler.
2015-08-10 20:26:06 +03:00
whitequark
435559fe50
Allow type annotations on remotely called functions.
2015-08-10 17:48:35 +03:00
whitequark
b28a874274
Inferencer: range() does not accept a float argument.
2015-08-10 17:06:55 +03:00
whitequark
f53a5ff202
Remove syscall builtin.
2015-08-10 16:44:29 +03:00
whitequark
261515dfe5
compiler.targets.OR1KTarget: fix typo.
2015-08-10 15:47:44 +03:00
whitequark
75532d10aa
Display full core device backtraces.
2015-08-10 15:12:22 +03:00
whitequark
c63ec70c53
LLVMIRGenerator: emit debug information.
2015-08-10 15:11:52 +03:00
whitequark
4f02f6e667
compiler.types: make all hashable.
2015-08-10 13:15:42 +03:00
whitequark
8f510a4407
compiler.ir.Function: add loc field.
2015-08-10 13:14:52 +03:00
whitequark
22570afbda
LLVMIRGenerator: allocate less.
2015-08-10 09:12:34 +03:00
whitequark
dfc91a35f2
ARTIQIRGenerator.polymorphic_print: str([x]) uses repr(x), not str(x).
2015-08-09 20:27:04 +03:00
whitequark
f7b64db8f4
LLVMIRGenerator: fixup phis on expansion of ARTIQ instructions.
2015-08-09 20:24:16 +03:00
whitequark
d4270cf66e
Implement receiving data from RPCs.
2015-08-09 20:17:00 +03:00
whitequark
02b1543c63
Implement receiving exceptions from RPCs.
2015-08-09 16:16:41 +03:00
whitequark
8b7d38d203
Add ARTIQ_DUMP_ASSEMBLY.
2015-08-09 15:47:29 +03:00
whitequark
9c5ca2ae29
LLVMIRGenerator: add target data layout to LLVM modules.
2015-08-09 14:39:21 +03:00
whitequark
153592f1cc
Naming.
2015-08-09 02:25:58 +03:00
whitequark
b26af5df60
Implement sending RPCs.
2015-08-09 02:17:19 +03:00
whitequark
22457bc19c
Ensure uwtable is added to all generated functions.
2015-08-08 21:48:21 +03:00
whitequark
ee3f35c608
Improve error message on passing an argument twice.
2015-08-08 21:06:13 +03:00
whitequark
bdcf7f100b
ARTIQIRGenerator: add semantic locs to all other implicitly raised exceptions.
2015-08-08 16:26:53 +03:00
whitequark
acd8d6355f
transforms.ARTIQIRGenerator: IndexError loc should point to "[".
2015-08-08 16:18:57 +03:00
whitequark
27d2390fed
Add zero-cost exception support to runtime and host.
2015-08-08 16:01:31 +03:00
whitequark
acc97a74f0
Fix compiler.module.
2015-08-07 14:21:53 +03:00
whitequark
a7633f75c7
Show origin of expansion in diagnostics for synthesized code.
2015-08-07 13:56:18 +03:00
whitequark
50448ef554
Add support for referring to host values in embedded functions.
2015-08-07 13:24:01 +03:00
whitequark
353f454a29
Add basic support for embedded functions with new compiler.
2015-08-07 11:44:49 +03:00
whitequark
1a969aa9e4
compiler.transforms.inferencer: accept and ignore @kernel decorator.
2015-08-07 07:54:35 +03:00
whitequark
7562d39750
compiler.module: split off inferencing from Module.__init__.
2015-08-06 08:25:53 +03:00
whitequark
ca52b2fdd0
compiler.transforms.ARTIQIRGenerator: fix typo.
2015-08-06 08:25:53 +03:00
whitequark
aae2923c4c
runtime: add lognonl{,_va} functions.
...
The kernels have print(), which prints aggregates (such as
arrays) piece-by-piece, and newlines would interfere.
2015-08-02 06:33:12 +03:00
whitequark
e8943a008c
Rename compiler/{targets/__init__.py → targets.py}.
2015-07-30 10:35:04 +03:00
whitequark
1e3911ed39
Use try..finally in compiler.targets.Target.link.
2015-07-30 10:33:54 +03:00
whitequark
b0185f3917
Add profiling to the performance testbench.
2015-07-29 22:23:22 +03:00
whitequark
d7f9af4bb5
Fix accidentally quadratic code in compiler.ir.Function._add_name.
2015-07-29 21:36:31 +03:00
whitequark
6d8d0ff3f5
Update performance testbench to include time spent in ARTIQ.
2015-07-29 21:28:07 +03:00
whitequark
3b5d3e2b1a
Add a performance measurement testbench.
2015-07-29 21:17:52 +03:00
whitequark
e8c107925c
Implement shared object linking.
2015-07-29 20:35:16 +03:00
whitequark
2cd25f85bf
Rename artiq.compiler.testbench.{module → signature}.
2015-07-29 14:32:34 +03:00
whitequark
3378dd57b8
Fold llvmlite patches into m-labs/llvmlite repository.
2015-07-29 13:54:00 +03:00
whitequark
2939d4f0f3
Add tests for finally clause and reraising.
2015-07-27 12:36:21 +03:00
whitequark
a83e7e2248
Add tests for exceptional control flow.
2015-07-27 10:22:28 +03:00
whitequark
90be44c596
Add tests for non-exceptional control flow across finally.
2015-07-27 10:13:22 +03:00
whitequark
7c77dd317a
Implement __artiq_personality.
2015-07-27 09:10:20 +03:00
whitequark
47f13bf921
Always load the personality library in JIT testbench, if available.
2015-07-27 04:44:40 +03:00
whitequark
14c7b15785
Add a test harness for exceptions.
...
The libunwind.h is duplicated here so that it would be possible
to test the Python parts without pulling in misoc.
2015-07-27 04:18:12 +03:00
whitequark
692791f0bd
Make sure a landing pad returns {i8*} to soothe LLVM codegen.
2015-07-25 07:01:25 +03:00
whitequark
ece52062f2
Implement code generation for exception handling.
2015-07-25 05:37:37 +03:00
whitequark
20f5f8217d
Make sure tests pass both on ARTIQ Python and CPython.
...
In some cases (the `is` operator and wraparound arithmetics)
the tests will only pass on ARTIQ Python. These are conditionally
commented out.
2015-07-23 08:09:25 +03:00
whitequark
65121b437f
Rework internal logic of slices.
2015-07-23 07:57:49 +03:00
whitequark
2b9ac344d8
Verify LLVM module in compiler.textbench.jit.
2015-07-23 07:57:35 +03:00
whitequark
9db199cad9
Handle closure effects appropriately in LocalAccessValidator.
2015-07-23 03:15:36 +03:00
whitequark
acb8810e62
Add tests for lambdas and functions.
2015-07-23 03:07:30 +03:00
whitequark
f8c2709943
Make division by zero raise an exception.
2015-07-23 01:26:50 +03:00
whitequark
4cfe4ea148
Make negative and too-far shifts have defined behavior.
2015-07-23 00:58:41 +03:00
whitequark
bf60978c7b
Add bool coercion support.
2015-07-22 19:15:54 +03:00
whitequark
de181e0cb9
Revert "Require boolean operand in BoolOp."
...
This reverts commit 5d518dcec6
.
2015-07-22 18:35:18 +03:00
whitequark
51aef980a0
Revert "Require boolean condition in If, While, IfExp."
...
This reverts commit e21829ce74
.
2015-07-22 18:35:14 +03:00
whitequark
f2a6110cc4
Add integration tests for every language construct.
2015-07-22 18:34:52 +03:00
whitequark
dff4ce7e3a
Return LLVM IR module from LLVMIRGenerator.process.
2015-07-22 04:13:04 +03:00
whitequark
986d9d944f
Add artiq.compiler.testbench.run.
2015-07-22 04:10:15 +03:00
whitequark
86e006830c
Use the correct printf format for 64-bit integers.
2015-07-22 03:05:15 +03:00
whitequark
236d5b886a
Add support for Assert.
2015-07-22 02:58:59 +03:00
whitequark
5d518dcec6
Require boolean operand in BoolOp.
2015-07-21 23:46:22 +03:00
whitequark
e21829ce74
Require boolean condition in If, While, IfExp.
2015-07-21 23:39:22 +03:00
whitequark
1e851adf4f
Add a polymorphic print function.
2015-07-21 22:32:10 +03:00
whitequark
0e7294db8d
Null-terminate all string literals.
2015-07-21 19:57:18 +03:00
whitequark
9d20080624
Use internal linkage for interior Python global values.
2015-07-21 19:55:43 +03:00
whitequark
8c9d9cb5a1
Make compiler.testbench.llvmgen emit a main() function.
2015-07-21 19:48:44 +03:00
whitequark
7301a76d68
Mark string constants as unnamed_addr.
...
As a result they will be merged when possible.
2015-07-21 17:10:31 +03:00
whitequark
49ece6a12a
Add support for string literals.
2015-07-21 14:27:48 +03:00
whitequark
64d2604aa8
Tolerate assertion failures in tests when looking for diagnostics.
2015-07-21 14:12:27 +03:00
whitequark
ec9d40b04f
Add LLVM IR generation for function calls.
2015-07-21 13:45:27 +03:00
whitequark
e299801c0f
LocalAccessValidator: fix validation of closures with no outer variables.
2015-07-21 13:16:18 +03:00
whitequark
6f11fa6bb1
Add conversion to LLVM IR (except handling of exception handling).
2015-07-21 04:55:01 +03:00
whitequark
c6cd318f19
Fix artiq.compiler.ir.BasicBlock.__repr__.
2015-07-19 16:32:33 +03:00
whitequark
7e3f91c0bb
Teach closures to LocalAccessValidator.
2015-07-19 12:08:26 +03:00
whitequark
2c010b10ee
Remove UnaryOp ARTIQ IR instruction; rename BinaryOp to Arith.
...
Everything it can express can also be expressed via Arith.
2015-07-19 11:51:53 +03:00
whitequark
ac491fae47
Add LocalAccessValidator.
2015-07-19 11:44:51 +03:00
whitequark
adf18bb042
Fix assignment to tuples in IRGenerator.
2015-07-19 10:31:11 +03:00
whitequark
4bd83fb43d
Use ".k" instead of "k" for the finalizer continuation variable.
...
The dot signifies that this is an internal variable and it
does not need to be tracked as if it was a user-defined one.
2015-07-19 10:30:42 +03:00
whitequark
8eedb3bc44
Fix IRGenerator.append(loc=...).
2015-07-19 10:29:33 +03:00
whitequark
f212ec0263
Add a trivial dead code elimination transform.
...
Its purpose is to sweep up basic blocks with no predecessors,
which are annoying to handle explicitly elsewhere.
2015-07-19 10:29:14 +03:00
whitequark
603d49dffa
Add a dominator analysis.
2015-07-18 20:48:52 +03:00
whitequark
224a93fde3
Make compiler.ir.BasicBlock.predecessors much faster.
2015-07-18 20:48:11 +03:00
whitequark
47cbadb564
Revert "Ensure bindings are created in correct order for e.g. "x, y = y, x"."
...
This reverts commit bcd1832203
.
The bindings are actually created in lexical order, as evident
in e.g. "x = lambda: x". The safety provided by this check should
be instead provided by a local access analysis.
2015-07-18 09:54:11 +03:00
whitequark
8e1cc8d985
Add an explicit ARTIQ IR instruction to create a closure.
2015-07-18 09:27:34 +03:00
whitequark
5ad02d5282
Fix ARTIQ IR generation for variables declared global.
2015-07-18 09:10:41 +03:00
whitequark
21eafefd28
Fix inference for globals.
2015-07-18 08:13:49 +03:00
whitequark
0d66bdfbf8
Fix For miscompilation.
2015-07-18 07:58:43 +03:00
whitequark
dde2e67c3f
Add source locations to ARTIQ IR instructions.
2015-07-18 07:49:42 +03:00
whitequark
255ffec483
Generate more compact ARTIQ IR for else-less if.
2015-07-18 07:49:27 +03:00
whitequark
e96bc3c36c
Add complete IR generator.
2015-07-17 21:29:06 +03:00
whitequark
f28549a11a
Add builtins.is_exception.
2015-07-17 16:05:02 +03:00
whitequark
3b661b2b65
Fix environment corruption by ExceptHandler without a name.
2015-07-17 16:04:46 +03:00
whitequark
2dcb744519
Fix inference for default arguments.
2015-07-16 17:26:31 +03:00
whitequark
f8e51e07d5
Add zero/one accessors to TBool, TInt, TFloat.
2015-07-16 16:03:24 +03:00
whitequark
bcd1832203
Ensure bindings are created in correct order for e.g. "x, y = y, x".
2015-07-16 15:59:59 +03:00
whitequark
5756cfcebc
Correctly infer type of list(iterable).
2015-07-16 15:35:46 +03:00
whitequark
6cda67c0c6
Ensure type comparisons see through type variables.
2015-07-16 14:59:05 +03:00
whitequark
c1e7a82e97
Add IndexError and ValueError builtins.
2015-07-16 14:58:40 +03:00
whitequark
b58fa9067d
Add attributes to TRange.
...
Also make attributes an OrderedDict, for stable order during
LLVM IR generation.
2015-07-16 14:57:44 +03:00
whitequark
a6950bf11d
Move builtin.is_{builtin,exn_constructor} to types.
2015-07-16 14:56:39 +03:00
whitequark
5000f87dfc
Rename the field of CoerceT from expr to value.
2015-07-16 14:55:23 +03:00
whitequark
e9416f4707
Convert Slice into typed SliceT.
2015-07-16 14:54:04 +03:00
whitequark
53fb03d1bf
Restrict comprehensions to single for and no if clauses.
2015-07-16 14:52:41 +03:00
whitequark
227f97f8a3
Add inference for Index, Slice and ExtSlice.
2015-07-16 04:22:41 +03:00
whitequark
c724e024ce
Fix inference for multiple-target assignments.
2015-07-15 06:33:44 +03:00
whitequark
9ff9f85f19
Add accessors to instructions.
2015-07-14 22:18:38 +03:00
whitequark
bdcb24108b
Add basic IR generator.
2015-07-14 08:56:51 +03:00
whitequark
f417ef31a4
Make binop coercion look through CoerceT nodes.
...
This fixes inference for "x = 1 + 1" after int monomorphization.
2015-07-14 06:42:09 +03:00
whitequark
ebe243f8d9
Add printing of SSA functions.
2015-07-13 21:08:20 +03:00
whitequark
dbdd45acc5
Add missing return.
2015-07-13 20:52:55 +03:00
whitequark
7c9afcce85
Fix Python default argument fiasco.
2015-07-13 20:52:48 +03:00
whitequark
7c52910dc5
Add a basic SSA IR.
2015-07-11 18:46:37 +03:00
whitequark
549c110e7c
Fix types.TFunction.fold.
2015-07-04 04:27:24 +03:00
whitequark
4785f0a2de
Don't error out in inferencer if builtin arguments have polymorphic types.
2015-07-04 04:27:15 +03:00
whitequark
16432d2652
Implement escape analysis.
2015-07-04 04:16:37 +03:00
whitequark
4358c5c453
Unbreak return type inference.
2015-07-04 02:23:55 +03:00
whitequark
561d403ddd
Add missing _loc forwarding.
2015-07-04 00:59:03 +03:00
whitequark
ee0990cb5e
Automatically infer return type of NoneType for no return statements.
2015-07-04 00:58:48 +03:00
whitequark
bfabca494b
Remove regions from types.
...
Unification-based inference for regions is useful with a language
that has let bindings (which would propagate the regions) and
functions polymorphic over regions. For reasons of simplicity,
ARTIQ has neither, and making unification-based inference work would
essentially mean adding region coercions between most AST nodes,
and having every source subexpression have its own region variable,
with the appropriate subtyping relationship.
It's simpler to just keep that state outside of typedtree.
2015-07-02 22:55:12 +03:00
whitequark
0ae13ac1b9
Style fixes.
2015-07-02 22:38:55 +03:00