Goose  Timeline

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

52 check-ins using file bs/builtins/statements/if.cpp version e0b8a22ca0

2019-08-08
23:24
Implemented the assignation operator. check-in: 3a2f2c23ab user: achavasse tags: trunk
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
14:29
Implemented the assignment operator of an expression to a decl of the same type, which declares and initialize a local variable. check-in: 90ab7b489f user: achavasse tags: trunk
09:59
Implemented the localvar builtin type. check-in: 3e177bc8cf user: achavasse tags: trunk
2019-08-07
19:31
Cleanup: removed an unused file. check-in: 45f56c570b user: achavasse tags: trunk
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
14:50
codegen: function arguments are now stored in allocas. check-in: e15e6a6e20 user: achavasse tags: trunk
01:56
  • Implemented some missing compile time instruction execution for unsigned ints.
  • C++ integer types are now mapped to fixed size integer types, rather than BigInt, now that the former are available at compile time.
  • The binary shift operators for ct_int now take an uint32 as their right hand side operand, rather than a ct_int.
check-in: a67a742689 user: achavasse tags: trunk
2019-08-06
23:07
Fixed size integers are now supported by compile time execution. check-in: 8714554a92 user: achavasse tags: trunk
22:51
Fixed size integers can now be represented as compile time values. check-in: f469cad435 user: achavasse tags: trunk
22:22
Renamed runtime types, because most of them (except pointers) will have to be available during compile time as well, so their names may as well be generic. check-in: fbc9052f6a user: achavasse tags: trunk
21:31
Updated .ll codegen test files that have changed after updating llvm. check-in: 97f68b01c9 user: achavasse tags: trunk
16:17
Cleanup: use the equality operator in tests now that it is available. check-in: 036f80c021 user: achavasse tags: trunk
16:04
Implemented comparison operators. check-in: 56107a5d5e user: achavasse tags: trunk
15:28
llr, execute, codegen: implemented comparison instructions. check-in: 08d543eea8 user: achavasse tags: trunk
12:15
Implemented arithmetic operators. check-in: d2db15fbbc user: achavasse tags: trunk
11:40
llr, execute, codegen: implemented arithmetic instructions. check-in: 270fa5b77b user: achavasse tags: trunk
00:33
  • Improved the operator parsing rules construction helpers to support both an unary and an infix operators sharing the same identifier.
  • Updated the comma operator implementation to use the same helpers as other operators, which makes it possible to overload it.
check-in: 035cf4826c user: achavasse tags: trunk
2019-08-05
21:14
Fixed shift operators precedence. check-in: 4fe0527143 user: achavasse tags: trunk
21:04
Implemented the shift operators. check-in: 2fdf1d1929 user: achavasse tags: trunk
20:07
Implemented the bitwise not, bitwise and and bitwise or operators. check-in: c7acd1eba0 user: achavasse tags: trunk
19:02
llr, execute, codegen: Implemented the And, Or, Shl, LShr and AShr instructions. check-in: c44aed7937 user: achavasse tags: trunk
17:47
Fixed a typo. check-in: b65e87c8ce user: achavasse tags: trunk
17:46
Implemented a wrapper around llvm::APSInt for compile time integers to manage mixing operations on integers of different bitsizes, and to automatically extend them as needed. check-in: 2bee844d3c user: achavasse tags: trunk
02:45
  • Unification now works in two passes. The second pass gives unification rules a chance to match again after all the holes have been resolved and substituted.
  • Fixed many horrible bugs in various unification rules that managed to go by unnoticed until the above change, after which they made everything catch on fire.
  • Simplified the ct_int and ct_string unification rules to take advantage of the new unification behavior. Everything finally works as intended wrt to ct_int versus RT integers.
  • Removed unification callbacks. It was a system to provide a way to perform unification work post hole substitution, so it is now obsolete.
check-in: 43e22af793 user: achavasse tags: trunk
2019-08-04
12:53
logic ops: forbid xor between runtime integers of different signedness. check-in: 011df3c4d3 user: achavasse tags: trunk
00:38
Improved the vscode syntax highlighting. check-in: e535403270 user: achavasse tags: trunk
00:04
Apply the ct_int unification fix to ct_string unification. check-in: 5a80915ee6 user: achavasse tags: trunk
2019-08-03
23:38
Fixed the ct_int unification rule, which didn't work correctly against generic function parameters. check-in: 18e3bfa195 user: achavasse tags: trunk
19:29
Implemented the runtime bitwise xor operator. check-in: 1886f5f367 user: achavasse tags: trunk
17:16
  • lexer: handle hex and binary integer literals.
  • builtins: implemented the logic and the compile-time bitwise xor operator.
check-in: bd7954bf0c user: achavasse tags: trunk
14:10
Added support for signed runtime integers and fixed multiple issues with ct_integer to runtime integer conversion. check-in: c7b1aea0a6 user: achavasse tags: trunk
12:08
builtins: added a mechanism to customize the patterns used to match parameter types in builtin function, to be able to create builtin generic functions. check-in: 2f3c7d306a user: achavasse tags: trunk
2019-08-02
23:26
Cleanup: removed an unused method. check-in: 69d5b9d0cc user: achavasse tags: trunk
22:35
Implemented the logic and operator. check-in: 7395ea3ffc user: achavasse tags: trunk
22:28
  • Implemented an "inline cfg" llr instruction that transfer execution control to another CFG.
  • Used the above in the logic or operator, which now works.
check-in: 9a6ae2acd0 user: achavasse tags: trunk
14:32
  • Removed ComplexVariable and related support code in llr. This will be replaced with a much better system.
  • Temporaries are now identified both by a cfg identifier, and an index within that cfg.
check-in: de2ecb573c user: achavasse tags: trunk
2019-08-01
22:49
Implemented the logic or operator. Not functional yet due to an architectural flaw. check-in: d939807dfa user: achavasse tags: trunk
21:11
parser: implemented ComplexValue, which is a value bundled with a CFG whose execution or insertion is a prerequisite to use the value. check-in: 79a134aa8e user: achavasse tags: trunk
20:25
  • CFGs keep track of the number of temporaries that they use
  • Temporaries indices are updated when appending a CFG to another, to avoid collisions
  • Phi now stores its result into a new temporary, instead of returning it directly (Phi has to be at the beginning of a basic block so we can't attach it directly to a value)
check-in: 59b1c58c70 user: achavasse tags: trunk
19:35
llr:
  • Added a function to append a CFG at the end of a specific basick block of another CFG.
  • CFGs can now be eagerly evaluated.
check-in: c1a795a64f user: achavasse tags: trunk
16:35
Cleanup: got rid of a bunch of header files that each contained only one function prototype. check-in: cc50e8025d user: achavasse tags: trunk
15:53
  • Rewrote the operator helpers: they now generate and invoke an overloadable intrinsic.
  • Implemented the logical not operator.
check-in: ed31e6303b user: achavasse tags: trunk
13:53
builtins: implemented intrinsic functions. check-in: b15874568f user: achavasse tags: trunk
2019-07-31
23:27
llr, execute, codegen: implemented the Xor instruction. check-in: 5ec364bc88 user: achavasse tags: trunk
22:40
builtins: implemented some helpers to easily create builtin operators with overloadable extension points. check-in: 39f2220e39 user: achavasse tags: trunk
19:06
llr, execute, codegen: added the Phi instruction. check-in: 52f162f30a user: achavasse tags: trunk
17:20
llr, execute, codegen: added the CreateTemporary instruction. check-in: 498281afd4 user: achavasse tags: trunk
16:06
Function's llr representations lifetimes are now handled by Env, and function values only contain raw pointers to their LLR. This is to avoid leaks with recursive functions. check-in: 1effb3a67a user: achavasse tags: trunk
14:05
Fixed some cyclic reference issues with cyclic CFGs:
  • Moved and renamed sema::CFGBuilder to llr::CFG.
  • llr::Func now owns a CFG pointer, rather than a pointer to its entry BB.
  • Branch and CondBranch now store weak pointers to their target BB.
check-in: d19a6bf065 user: achavasse tags: trunk