Goose  Timeline

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

59 check-ins using file bs/cir/logic.h version 1c9a67a2c3

2023-07-05
22:01
Some builtins to work with references during verification:
  • RefToAddr conversion function
  • dot operator overloads to extract the lifetime, origin and path of an address
check-in: 914b2e2af1 user: zlodo tags: trunk
2023-07-01
11:21
Execute: function argument passing simplification (overlooked from back when the CIR was turned into a stack language) check-in: 2e14edebd0 user: zlodo tags: trunk
2023-06-30
22:41
Verifier:
  • Remove hardcoded handling of ref type from verifier, lower ref type to address for verification instead
  • Complete the handling of address type and handle selecting+loading an address' lifetime, origin and path
check-in: 1adbcaa805 user: zlodo tags: trunk
2023-06-22
23:33
Implemented lowering of Addresses into a tuple representation for verification check-in: 25b51220ed user: zlodo tags: trunk
2023-06-17
10:15
  • Remove MemLoc, it's redundant with cir::Address
  • Added compîlation time sequence type
  • Partially handle sequence type in the verifier (to be completed later)
  • Added "SelectPath" builtin type for adress paths
check-in: 08898dae70 user: zlodo tags: trunk
2023-05-31
21:34
Lifetimes: implemented verifier's z3 representation check-in: b1d4853b7f user: zlodo tags: trunk
2023-05-05
18:03
Lifetime specifications parsing check-in: bb7e75cb1b user: zlodo tags: trunk
2023-04-03
22:37
Moved the code that emits type predicate checks for values returned by intrinsics into an extension point check-in: 72cb3ae97a user: zlodo tags: trunk
2023-03-28
19:44
Get rid of the TCRINFOS macro, use std::source_location instead to remove some noise check-in: d9414ddc6f user: zlodo tags: trunk
2023-03-27
18:34
  • reworked value wrapping in intrinsics, unwrapping can now only happen for the returned value (for verification reasons)
  • removed the _ConvertFuncArg extension point, replaced it with _ConvertFuncArgs that operates on all of the args (so that we can do cross argument things in the prelude, will be needed for lifetimes)
check-in: f271454617 user: zlodo tags: trunk
2023-03-06
22:24
prelude: implemented UnwrapValue check-in: c550a4bc43 user: zlodo tags: trunk
2023-03-05
22:24
  • removed fmtlib, now use std::format
  • vastly improved the overload resolution debugging tools
  • prelude: started adding some extra error detection for small things that don't need to be builtin
  • prelude: started working on implementing #for for tuples, some stuff needs to be addressed still
  • fixed some type checking issue with wrapped args
  • fixed superfluous nested lifetime scope in brace blocks (which caused redundant calls to some extension points)
check-in: 4d4d76607a user: zlodo tags: trunk
2023-02-28
00:55
  • Intrinsic functions: no longer systematically wrap every argument. Instead, arguments that needs to be wrapped can be indicated by decorating their type with the WrappedArg type function.
  • Fixed several bugs related to forwarding template vars ($$whatever)
check-in: 9f242fb2ff user: zlodo tags: trunk
2023-02-20
17:54
Migrated to clang16/llvm16. Created a shitty layer on top of llvm to cope with losing the pointee types from llvm pointer types (which are now opaques). It was a huge pain in the ass. check-in: 0c646816e4 user: zlodo tags: trunk
2023-02-07
15:49
Removed the ToType extension point, go through typechecking instead for converting things such as tuple of types into types. This is more generic than the previous approach and will avoid some pitfalls in the future. check-in: 1b18849f5c user: zlodo tags: trunk
2023-01-30
19:33
Implemented the _IsTrivialInitialization extension point to optimize tuple initialization in the same way as assignments check-in: d70fa1ef12 user: zlodo tags: trunk
2023-01-29
20:48
  • Added the _IsTrivialAssignment extension point to indicate whether an assignment between two given types is trivial or absolutely needs to be resolved to an operator_assign invocation
  • Use the above to simplify tuple assignments when all the contained members have trivial assignments
check-in: 7751ce994d user: zlodo tags: trunk
2023-01-24
18:02
  • Refactored tuple assignment operator and fixed a case where it would crash
  • Fixed incorrect CIR code generation involving constant tuples containing computed values
check-in: b47efa975d user: zlodo tags: trunk
2023-01-10
22:29
ToString: don't print addresses of void pointers anymore check-in: c8f5e99651 user: zlodo tags: trunk
22:01
Implemented textual dump of a function's CIR to more easily inspect it and implement some code generation tests at the CIR level check-in: 4edae7e1a3 user: zlodo tags: trunk
2023-01-09
19:06
Fixed bad hashing implementation of terms containing a locationId that caused some absurd crash in the verifier check-in: 8fd3b7a078 user: zlodo tags: trunk
2023-01-06
19:13
Remove redundant calls to the ToType extension point when compiling function bodies check-in: 78a358141d user: zlodo tags: trunk
2023-01-05
19:44
Fixed passing tuple by value to functions, which involved properly handling type checking of constant tuples containing computed data and some codegen bugs check-in: 9b8306c3af user: zlodo tags: trunk
2022-11-21
18:59
  • some fixes in #for base implementation
  • g0api: exposed functions to deconstructs decls
check-in: ac0c5a2c6a user: zlodo tags: trunk
2022-11-20
10:49
g0api: expose some tuple and some parsing stuff check-in: ec453bb5a1 user: zlodo tags: trunk
2022-11-17
22:57
Remove an old z3 workaround that doesn't seem necessary anymore check-in: 44da39ac61 user: zlodo tags: trunk
22:43
g0api:
  • visiblity scopes
  • combined visibility/lifetime scopes
check-in: 8546f1ef75 user: zlodo tags: trunk
00:46
expose more compiler functionality to g0api:
  • local variable declarations
  • lifetime scopes
check-in: 605ff0a654 user: zlodo tags: trunk
2022-11-11
20:01
  • Implemented template tuples and vararg tuples
  • Fixed a few issues with the verifier
check-in: 08ffdaf6db user: zlodo tags: trunk
2022-09-02
21:42
  • Implemented a test for variadic functions
  • Fixed a million issues and missing things preventing the above from working
  • Implemented equality operators for types
check-in: 373a6ebd57 user: zlodo tags: trunk
2022-08-29
20:42
Partial implementation of compile-time for loop (rest to be done in prelude but needs a handful additional apis) check-in: 24b6c5ae2e user: zlodo tags: trunk
2022-08-28
17:12
vararg templates: completed the pack TExpr and pack TVars implementations (need tests) check-in: 0146622968 user: zlodo tags: trunk
2022-07-30
11:41
varargs: simplify (not going to attempt handling nesting repetitions after all) check-in: 4c0f447d59 user: zlodo tags: trunk
2022-07-25
17:23
vararg templates: set the signature of pack texprs as the repeating part of the vector, and diagnose packs not appearing last check-in: 27cf09cdf5 user: zlodo tags: trunk
2022-07-22
00:36
Switch back to using fmtlib so we can build with clang 14 for stability and since nowadays we apparently can't expect to be able to use c++ features that were accepted in the standard 2 years ago :/ check-in: 7e6d3483ec user: zlodo tags: trunk
2022-07-21
01:09
Small cleanup check-in: 6e0a90698d user: zlodo tags: trunk
2022-07-20
19:22
vararg template: added pack TExpr and ellipsis operator check-in: ba07901758 user: zlodo tags: trunk
2022-07-18
23:45
vararg templates: added a "prepare template" step prior to generating the template signature, which does nothing yet check-in: fe34bd71de user: zlodo tags: trunk
00:14
Keep track of the repetition depth of pack TVars, and assign a new value index for each repetition of a pack hole check-in: a2a6841c8b user: zlodo tags: trunk
2022-07-17
10:51
Fixed a bug in the verification instruction filter that somehow resulted in failed tests only on mac check-in: 64463a60a6 user: zlodo tags: trunk
2022-07-16
14:42
Varargs: added a "nested repetition depth" property to holes check-in: 97ff23912a user: zlodo tags: trunk
2022-07-05
22:10
TypeChecking: keep track of nested repetition indices for each sub context check-in: 95bdac72ca user: zlodo tags: trunk
2022-07-04
21:48
Minor cleanup check-in: 29b4ebb32f user: zlodo tags: trunk
21:20
typechecking: refactor type checking context to be able to hold more sub-context information than hole namespace indices check-in: 9fd8a2a87e user: zlodo tags: trunk
17:45
Refactored some template rules and type checking rules to avoid calling BuildTemplateSignature from inside type checking rules check-in: 64224a915f user: zlodo tags: trunk
2022-07-02
14:22
Vararg templates: function param decls with open tuple types are expanded into multiple params check-in: ecd5b0e89a user: zlodo tags: trunk
2022-06-30
19:06
Remove obsolete TODO check-in: 3f5776378b user: zlodo tags: trunk
17:58
Verifier: fix unique id generation to be done on a per function basis rather than globally to make the z3 generation tests more stable check-in: f4e40b75d7 user: zlodo tags: trunk
2022-06-29
21:47
The CIR is no longer made out of instructions that are basically expression trees, but is now instead a stack language to make it possible to insert verification instructions before and after the evaluation of individual function arguments check-in: 1f87fbda15 user: zlodo tags: trunk
21:39
  • Verifier: consider verification failed if we encountered anything funny that prevented us from translating the entire function cfg to z3, rather than silently ignoring it
  • Verifier: fixed a case where the verifier would improperly bail out and do the above
  • Verifier: fixed a nasty use-after-free caused by forgetting an ampersand. fucking c++
Closed-Leaf check-in: 9814f18b04 user: zlodo tags: cir-stack-language
2022-06-28
22:51
Removed an unusued file and a left over debugging profanity check-in: 6c5b747f5c user: zlodo tags: cir-stack-language
22:23
codegen: improved the translation of address computations into llvm GEP instructions check-in: 2a03dd67e5 user: zlodo tags: cir-stack-language
2022-06-27
16:56
  • cir: allow verification specific code and instructions to be interspersed with regular code again and added a function to filter them out before consuming the code in the interpreter and during codegen
  • verification: better handling of non-representable types that don't involve giving up entirely on verifying the function
  • g0 api: updated it to match the CIR changes
  • prelude: adapted reference verification to the new CIR api
check-in: b81d4242e3 user: zlodo tags: cir-stack-language
2022-06-23
20:56
Ported most of the g0 api to the new CIR language check-in: 9eb48e68a1 user: zlodo tags: cir-stack-language
20:01
Correctly handle ghost func applications as "storage locations" alongside regular addresses, fixes the remaining ghost func test check-in: 68da32e88b user: zlodo tags: cir-stack-language
2022-06-22
20:06
Re-implemented "addr modified by loop" stuff (except ghost func related stuff) and re-enabled loop verification tests check-in: a0a57b5e22 user: zlodo tags: cir-stack-language
2022-06-21
17:26
Removed a bit of dead code check-in: b78a3ea203 user: zlodo tags: cir-stack-language
17:09
  • Implemented conversion of Address into a z3 expression, fixes ghostfunc test 4
  • Fixed handling of Ret terminator that didn't always pop the result value
check-in: d2090773d9 user: zlodo tags: cir-stack-language
2022-06-18
18:51
  • Added a location id to all CIR instructions (needed with the stack based approach to locate intermediate results)
  • Fixed a bunch of verifier errors
  • Re-enabled most verifier tests, other than some requiring to re-implement a few more bits
check-in: b4d5bdf6ec user: zlodo tags: cir-stack-language