aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Remove install path bricolage for kvxv3.9_kvxCyril SIX2021-06-012-4/+5
|
* Merge remote-tracking branch 'verimag/manuscript' into kvx-workCyril SIX2021-06-011-13/+11
|\
| * Do not rotate if the CB was already at the end.Cyril SIX2021-04-281-1/+5
| |
| * Heuristic counter updateCyril SIX2021-04-281-12/+6
| |
* | Update INSTALL.mdCyril SIX2021-06-011-0/+6
| |
* | Fixing build for KVX (missing ccomp_kvx_fixes.h for runtime)Cyril SIX2021-06-011-0/+1
| |
* | Add target ELFCyril SIX2021-06-014-2/+7
| |
* | Merge remote-tracking branch 'absint/master' into kvx-workCyril SIX2021-06-013-4/+6
|\ \
| * | Support `# 0 ...` preprocessed line directiveXavier Leroy2021-06-011-1/+1
| | | | | | | | | | | | | | | | | | | | | Before, the line number had to start with a nonzero digit. However, the GCC 11 preprocessor was observed to produce `# 0 ...` directives. Fixes: #398
| * | Register X1 is destroyed by some built-in functionsXavier Leroy2021-05-132-3/+5
| | | | | | | | | | | | E.g. __builtin_bswap. Update Asm modeling of builtins accordingly.
| * | Update for release 3.9Xavier Leroy2021-05-101-1/+1
| | |
| * | Update Changelog for release 3.9Xavier Leroy2021-05-091-0/+3
| | |
| * | Update for release 3.9Xavier Leroy2021-05-091-4/+5
| | | | | | | | | | | | Also: limit the max width of the page, to avoid very long lines.
| * | Update ChangelogXavier Leroy2021-05-081-1/+11
| | |
| * | Use the LGPL instead of the GPL for dual-licensed filesXavier Leroy2021-05-08149-860/+1171
| | | | | | | | | | | | | | | | | | The GPL makes sense for whole applications, but the dual-licensed Coq and OCaml files are more like libraries to be combined with other code, so the LGPL is more appropriate.
| * | Fix evaluation order in emulation of bitfield assignmentXavier Leroy2021-05-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A bitfield assignment `x.b = f()` is expanded into a read-modify-write on `x.carrier`. Wrong results can occur if `x.carrier` is read before the call to `f()`, and `f` itself modifies a bitfield with the same carrier `x.carrier`. In this temporary fix, we play on the evaluation order implemented by the SimplExpr pass of CompCert (left-to-right for side-effecting subexpression) to make sure the read part of the read-modify-write sequence occurs after the evaluation of the right-hand side. More substantial fixes will be considered later. Fixes: #395
| * | Support __builtin_expectXavier Leroy2021-05-021-0/+5
| | | | | | | | | | | | | | | | | | | | | Not yet used for optimizations. Actually, __builtin_expect is removed during C2C conversion, otherwise the conversion to type "long" produces inefficient code on 64-bit platforms.
| * | Support __builtin_unreachableXavier Leroy2021-05-028-2/+32
| | | | | | | | | | | | Not yet used for optimizations.
| * | Fix spurious error on initialization of struct with flexible array memberXavier Leroy2021-05-021-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The following is correct but was causing a "wrong type for array initializer" fatal error. ``` struct s { int n; int d[]; }; void f(void) { struct s x = {0}; } ``` Co-authored-by: Michael Schmidt <github@mschmidt.me>
| * | Update ChangelogXavier Leroy2021-04-291-0/+53
| | |
| * | Emit no entry for variables without init in json.Bernhard Schommer2021-04-291-1/+7
| | | | | | | | | | | | | | | | | | | | | Variables without init do not generated any assembly code so no entry in the json AST should be generated. They correspond to extern variables without initializer that are defined in another compilation unit. Bug 30112
| * | MacOS: add a #define __DARWIN_OS_INLINEXavier Leroy2021-04-271-2/+2
| | | | | | | | | | | | | | | Seems necessary for the standard headers of a recent version of XCode. The actual definition in the standard headers is only for GNUC.
| * | Support Coq 8.13.2Xavier Leroy2021-04-271-2/+2
| | |
| * | More fixes for ld/std issue.Bernhard Schommer2021-04-241-11/+40
| | | | | | | | | | | | | | | | | | | | | Volatile load and store are expanded later and also use the ld/std instructions, therefore the same fixes that are applied as well for them. Bug 30983
| * | Tentative first fix for offsets of ld/std.Bernhard Schommer2021-04-245-152/+259
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The offsets immediates used in the ld and std instructions must be a multiple of the word size. This commit changes the two functions which are used when generating load/stores in Asmgen, accessind and transl_memory_access. For accessind one only needs an additional check that the offset is a multiple of the word size for the case that the high part of the offset is zero, since otherwise the immediate is loaded into a register anyway. The transl_memory_access function needs some slightly more complex adoption. For all variants that do not construct the address in a register before hand we must check that the offsets are multiples of the word size and additionally if a symbol is used that the alignment of the symbol is also a multiple of the word size. Therefore a new parameter is introduced that allows checking the alignment. In order to reduce the code duplication for the proofs these two functions get an additional parameter in order to indicate wether the offset needs to be a multiple of the word size or not. Bug 30983
| * | Update the output of clightgen to pick the `$` notation from its new placeXavier Leroy2021-04-231-1/+3
| | | | | | | | | | | | Follow-up to bb5dab848
| * | Remove `-version-file` option from option summaryXavier Leroy2021-04-231-1/+0
| | | | | | | | | | | | | | | The `-version-file` option was removed in commit 600803cae, but remained in the option summary, as reported in #386.
| * | Move `$` notation in submodule `ClightNotations` and scope `clight_scope`Xavier Leroy2021-04-231-11/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This avoids a nasty conflict with Ltac2 notations as reported in #392. The old `$` notation in scope `string_scope` was not used yet, AFAIK. The new submodule and the new scope are the right places to add future notations to facilitate working with the output of clightgen. Fixes: #392
| * | Use List.repeat from Coq's standard library instead of list_repeatXavier Leroy2021-04-194-36/+16
| | |
| * | Bump minimal Coq version to 8.9.0Xavier Leroy2021-04-191-2/+2
| | | | | | | | | | | | This is required to have List.repeat in the standard library (next commit).
| * | Elab bitfields: check size of type <=32bit rather than checking rank (#387)Amos Robinson2021-04-194-2/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When desugaring a bitfield, allow any integral type that is 32 bits or smaller. Previously this was checking the rank of the type rather than the size. This rank check caused issues with standard headers that declare `uint32_t` to be an `unsigned long` rather than an `unsigned int`. Here, any bitfields declared as `uint32_t` were failing to compile even though they are still actually 32 bits. Co-authored-by: Amos Robinson <amos@gh.st>
| * | Refactor cparser/Parse.mlXavier Leroy2021-04-191-31/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | - Use pipeline notation `|>` for legibility and better GC behavior (in bytecode at least). - Introduce auxiliary functions. - Remove useless function parameters. - Fix the timing of the "Emulations" pass (because of an extra parameter, what was timed took zero time).
| * | Ensure compatibility with future versions of MenhirLibXavier Leroy2021-04-191-6/+7
| | | | | | | | | | | | | | | | | | | | | | | | After Menhir version 20210310, the `Fail_pr` constructor of the `parse_result` type becomes `Fail_pr_full` with two extra arguments. This PR enables CompCert to handle both versions of the `parse_result` type in MenhirLib.
| * | Do not depend on projection parameter names (#388)Xia Li-yao2021-03-251-1/+1
| | | | | | | | | | | | | | | | | | coq/coq#13852 fixes an oddity in the automatically-generated names for projection parameters. There was one place in CompCert where one of these automatically-generated names was used. This commit avoids using this name.
* | | Merge remote-tracking branch 'origin/kvx-work' into merge_master_8.13.1Cyril SIX2021-06-0177-1940/+4260
|\ \ \
| * | | removing some Expansion when loading float/single constantsLéo Gourdin2021-06-011-16/+22
| | | |
| * | | Merge branch 'kvx-work' of ↵Léo Gourdin2021-05-311-1/+0
| |\ \ \ | | | | | | | | | | | | | | | gricad-gitlab.univ-grenoble-alpes.fr:sixcy/CompCert into kvx-work
| | * | | just remove a debug printLéo Gourdin2021-05-291-1/+0
| | | | |
| * | | | bugfix A64 peephole (cf Scade/Fighter example)Léo Gourdin2021-05-311-6/+5
| |/ / /
| * | | Adding both RV expansion methods in kvx-workLéo Gourdin2021-05-198-48/+1410
| | | |
| * | | Merge branch 'riscv-work-fpinit-stillexp' into kvx-workLéo Gourdin2021-05-190-0/+0
| |\ \ \
| | * | | xorimmsubmission_OOPSLA2021_RISCVLéo Gourdin2021-04-092-0/+77
| | | | |
| | * | | removing useless flag checkLéo Gourdin2021-04-091-3/+1
| | | | |
| * | | | debug prints uniformizedLéo Gourdin2021-05-181-69/+66
| | | | |
| * | | | for making the dockerDavid Monniaux2021-05-114-0/+3
| | | | |
| * | | | for pruning the dockerDavid Monniaux2021-05-111-1/+2
| | | | |
| * | | | pruning the imageDavid Monniaux2021-05-111-0/+4
| | | | |
| * | | | adjust to compile for various archDavid Monniaux2021-05-111-3/+3
| | | | |
| * | | | progress being madeDavid Monniaux2021-05-101-2/+15
| | | | |
| * | | | build for aarch64David Monniaux2021-05-101-1/+4
| | | | |