Goose  Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

50 most recent check-ins that include changes to files matching 'bs/llr/*'

2020-12-27
14:40
Renamed "ir" to "eir" (expression intermediate representation) and "llr" to "cir" (code intermediate representation) for clarity. check-in: 7d2def7b75 user: achavasse tags: trunk
2020-12-26
14:59
Build fix check-in: c8058eaaf9 user: achavasse tags: trunk
2020-12-18
01:29
References refactor: references are now values all the way to the llr, where a new "CalcAddress" instruction represents a conversion from a logical address (location + path) into an actual runtime or compilation time address. This is in preparation to allow references to be stored in variables or passed as parameters. (It just took 4.5 months to finish this... Refactoring just sucks) check-in: 8ddd71f9b2 user: achavasse tags: trunk
2020-06-13
13:15
Rewrote the reference unification rules. check-in: ba97c17dee user: achavasse tags: trunk
2020-06-05
18:57
Verifier: loops: instead of tracking and havocing modified variables during loops, track modified addresses, so that modifying only some fields of a tuple will not result in forgetting everything about the other fields. check-in: 54ef60956e user: achavasse tags: trunk
2020-05-23
12:58
  • Fixed the hole matching score which prevented some unification rules to be selected.
  • Implemented LowerTypeForRuntime for tuples.
  • Implemented an unification rule for constant tuples.
  • Added some debugging helpers.
check-in: c39a302502 user: achavasse tags: trunk
2020-05-19
15:03
The TemporaryAddress address calculation mode now carries around the initializer value, in case the temporary doesn't already exist. This allows a reference to a temporary to be completely self contained in its value, rather than requiring a separate setup instruction to be emited in the cfg. check-in: 934090c5a8 user: achavasse tags: trunk
2020-05-03
15:32
Simplified the llr address representation. check-in: 0b4eb97a44 user: achavasse tags: trunk
2020-04-22
23:27
Removed llr::SetVar, now using the more generic llr::Store instead. check-in: 036092faf1 user: achavasse tags: trunk
2020-04-15
06:36
Removed llr::GetVar, now using the more generic llr::Load instead. check-in: 20c242dc4f user: achavasse tags: trunk
2020-04-11
21:01
  • Implemented load, store and pointers in execute and codegen.
  • Implemented load and pointers in verify.
  • When unifying a local variable against a parameter, generate a reference.
check-in: e814ad7e23 user: achavasse tags: trunk
2020-03-07
16:36
More work and fixes on references. Reading a tuple member using the . operator (which returns a constant reference) is now working. check-in: 1c33db7499 user: achavasse tags: trunk
2020-02-27
22:15
Implemented the dot operator for tuples. check-in: 2f953408d9 user: achavasse tags: trunk
2020-02-23
23:57
llr: added the load and store instructions. check-in: f34a90f312 user: achavasse tags: trunk
2020-02-22
21:22
llr: added the GEP instruction. check-in: 1f1bc22ffc user: achavasse tags: trunk
2019-11-19
20:49
Store a location in loop headers, and use it to provide more context when diagnosing loop verification failures. check-in: 5f20eec65e user: achavasse tags: trunk
20:20
cfg: fix the way the variable ids modified by each loop are stored to avoid duplicate entries. check-in: 1c3ff200aa user: achavasse tags: trunk
00:04
cfg: now that we got rid of this crazy system where CFGs could "call" other CFGs that weren't really functions, removed that clumsy cfg index that was needed to identify temporaries everywhere. check-in: 238df77134 user: achavasse tags: trunk
2019-11-18
22:42
Removed the "inline CFG" llr instruction and related support code. check-in: 5329f83e33 user: achavasse tags: trunk
22:09
Refactor the logic and/or operator to directly append new basic blocks into the current CFG, rather than using a special llr instruction that embeds a nested CFG, whose implementation creates a lot of complexity everywhere. check-in: 70717f6b76 user: achavasse tags: trunk
2019-11-17
18:20
  • cfg: compute a list of every variable modified by each loop.
  • verifier: added a function to "havoc" a variable at the start of a given basic block.
check-in: 02836c95bc user: achavasse tags: trunk
2019-11-16
16:27
  • while: remove code attempting to detect infinite loops, this will be best left to the verifier.
  • verifier: loop unrolling now works.
check-in: f7c8245cb2 user: achavasse tags: trunk
2019-10-30
22:08
Verifier: more work on loop verification. check-in: c91249ffc7 user: achavasse tags: trunk
2019-10-27
21:31
Verifier: split func.cpp into multiple files to make navigation easier. check-in: f606dd6e5d user: achavasse tags: trunk
2019-10-22
22:11
Verifier: traverse basic blocks in breadth first order and make sure that the current block's predecessors are processed first, so that we don't rely anymore on the order in which they are created by the statements. check-in: d7e2fcc24f user: achavasse tags: trunk
2019-10-16
23:08
llr: detect and store relevant informations about loops in the CFG to be able to unroll them in the verifier. check-in: b1f107d1e7 user: achavasse tags: trunk
2019-10-15
00:04
llr: implemented a helper function to compute dominators. check-in: cfc94e192c user: achavasse tags: trunk
2019-10-08
21:55
  • Verifier: handle calls (assert the callee's preconditions and assume its postconditions)
  • Verifier: handle return value placeholder in the post conditions.
  • Verifier: fixes.
  • Verifier: context descriptions and locations can be attached to assertions.
  • Lexer: fix incorrect location length on integer literals.
  • Added some tests for successful and failed verification of functions pre-conditions and post-conditions.
check-in: 09e8221436 user: achavasse tags: trunk
18:02
Added the "placeholder" llr pseudo instruction. check-in: cc9ce06e64 user: achavasse tags: trunk
2019-10-05
13:58
Implemented the conversion of GetVar/SetVar/GetTemporary/SetTemporary to z3 expressions. check-in: 3ae3c0b3ad user: achavasse tags: trunk
11:55
z3 builder: handle variables. check-in: 83476a562e user: achavasse tags: trunk
2019-10-03
19:58
FuncValidator: model the execution flow in z3 by generating boolean expressions describing when each basic block is executed. check-in: 6c8e8075ff user: achavasse tags: trunk
2019-09-29
22:30
  • Fixed some issues with implicit termination of void functions.
  • llr: give an index to each basic block, and keep track of back links towards previous blocks.
check-in: 4ae6912760 user: achavasse tags: trunk
20:30
Added a specific llr instruction for 'not' for the sake of constructing z3 expressions. check-in: 2628782ef2 user: achavasse tags: trunk
2019-09-26
00:27
Static analysis: check that function verification statements are satisfiable and emit relevant error messages if they aren't. check-in: 7f14d60722 user: achavasse tags: trunk
2019-09-22
14:37
Project renaming. check-in: af650a9e95 user: achavasse tags: trunk
2019-09-09
16:00
llr: added the assert verification instruction. check-in: 3e6bd22335 user: achavasse tags: trunk
2019-08-25
01:54
  • Got rid of the LoadConstInt instruction and directly handle integer constants in codegen. The old system didn't work for compile-time evaluated runtime integers.
  • Added missing implementations for unsigned comparison, that were somehow forgotten.
  • Implemented the nullptr constant.
  • Made a test version of the mandelbrot sample that gets both compiled and interpreted and whose results are compared with the same reference file, as a sanity test that interpreted and compiled code behave identically.
check-in: 9a68159d52 user: achavasse tags: trunk
2019-08-24
19:33
More cleanup around which builtin functions should be intrinsics/eager/non eager. check-in: fece958df9 user: achavasse tags: trunk
2019-08-22
13:23
You have failed me for the last time, CMake. check-in: e38aee1ca0 user: achavasse tags: trunk
2019-08-20
23:42
  • Fixed broken canBeExecuted() and canBeEagerlyEvaluated() computation of CFGs.
  • Added some error messages when a function with compile-time only types contains calls to runtime functions. (to be improved and detected during parsing rather than codegen but serviceable for now)
check-in: d5bc4daeca user: achavasse tags: trunk
2019-08-18
18:52
  • Implemented the break and the continue statements.
  • Fixed cfg generation issues with nested control statements.
  • Fixed unreachable code error messages not emitted in some cases.
check-in: a504aedf6c user: achavasse tags: trunk
15:35
llr: added the break and continue terminators. check-in: b16e7c5933 user: achavasse tags: trunk
14:51
  • Fixed speculative compile-time execution causing compilation failures.
  • Fixed compile time execution budget underflowing, leading to the compiler going into an infinte loop while compiling an infinite loop (erm...)
  • Fixed more cases of missing propagation of poison states leading to spurious error messages.
check-in: 9d81e31cfe user: achavasse tags: trunk
2019-08-15
01:27
  • Implemented the DropValue() extension point, called when a previously pushed value is dropped without being used.
  • ir, sema: the complexity of an ir expression is now directly counted by ir::Vector, so that we don't have to deal with it in every unification rule (and it was missing from most of them, which caused incorrect overload resolutions in some cases).
check-in: 75bcd81044 user: achavasse tags: trunk
2019-08-14
02:30
  • Added an unification rule to deal with LocationIds. It honors poisoning and preserve the most recent location from the input values.
  • Added a diagnostic context indicating the point at which a template function passed as a value has been instantiated.
  • Added a trace mode that logs the diagnostics contexts, which can be activated by calling a compile time function.
  • Added a few diagnostic messages tests.
check-in: 980effe072 user: achavasse tags: trunk
2019-08-08
16:53
  • Implemented the local variable unification rule, which allows to read them.
  • Fixed comparison operators not returning bools.
check-in: c9a44e2fb9 user: achavasse tags: trunk
2019-08-07
19:10
llr, execute, codegen: implemented the SetVar instruction. check-in: a7d4b38ca5 user: achavasse tags: trunk
17:29
llr, execute, codegen: implemented the AllocVar and GetVar instructions. check-in: b0b8db5e09 user: achavasse tags: trunk
16:07
execute: removed the old local var functions in frame, and reimplemented them using the new temporary system. Function args are now also handled through this. check-in: 391fc3dedd user: achavasse tags: trunk