aboutsummaryrefslogtreecommitdiffstats
path: root/backend/Unusedglobproof.v
Commit message (Collapse)AuthorAgeFilesLines
* Support for 64-bit architectures: generic supportXavier Leroy2016-10-011-21/+21
| | | | | | | | | | | - Introduce Archi.ptr64 parameter. - Define module Ptrofs of integers as wide as a pointer (64 if Archi.ptr64, 32 otherwise). - Use Ptrofs.int as the offset type for Vptr values and anywhere pointer offsets are manipulated. - Modify Val operations that handle pointers (e.g. Val.add, Val.sub, Val.cmpu) so that in 64-bit pointer mode it is the "long" operation (e.g. Val.addl, Val.subl, Val.cmplu) that handles pointers. - Update the memory model accordingly. - Modify C operations that handle pointers (e.g. addition, subtraction, comparisons) accordingly. - Make it possible to turn off the splitting of 64-bit integers into pairs of 32-bit integers. - Update the compiler front-end and back-end accordingly.
* Stricter control of permissions in memory injections and extensionsXavier Leroy2016-06-221-0/+11
| | | | As suggested by Lennart Beringer, this commits strengthens memory injections and extensions so as to guarantee that the permissions of existing memory locations are not increased by the injection/extension. The only increase of permissions permitted is empty locations in the source memory state of the injection/extension being mapped to nonempty locations.
* Update the back-end proofs to the new linking framework.Xavier Leroy2016-03-061-509/+611
|
* Updated PR by removing whitespaces. Bug 17450.Bernhard Schommer2015-10-201-207/+207
|
* Refactoring of builtins and annotations in the back-end.Xavier Leroy2015-08-211-47/+35
| | | | | | | | | | | | | | | | | | | | | | | | Before, the back-end languages had distinct instructions - Iannot for annotations, taking structured expressions (annot_arg) as arguments, and producing no results' - Ibuiltin for other builtins, using simple pseudoregs/locations/registers as arguments and results. This branch enriches Ibuiltin instructions so that they take structured expressions (builtin_arg and builtin_res) as arguments and results. This way, - Annotations fit the general pattern of builtin functions, so Iannot instructions are removed. - EF_vload_global and EF_vstore_global become useless, as the same optimization can be achieved by EF_vload/vstore taking a structured argument of the "address of global" kind. - Better code can be generated for builtin_memcpy between stack locations, or volatile accesses to stack locations. Finally, this commit also introduces a new kind of external function, EF_debug, which is like EF_annot but produces no observable events. It will be used later to transport debug info through the back-end, without preventing optimizations.
* Long-overdue renaming: val_inject -> Val.inject, etc, for consistency with ↵Xavier Leroy2015-04-301-17/+17
| | | | Val.lessdef, etc.
* Extend annotations so that they can keep track of global variables and local ↵Xavier Leroy2015-03-271-0/+77
| | | | | | | | | | variables whose address is taken. - CminorSel, RTL: add "annot" instructions. - CminorSel to Asm: use type "annot_arg" for arguments of "annot" instructions. - AST, Events: simplify EF_annot because constants are now part of the arguments. Implementation is not complete yet.
* Introduce symbol environments (type Senv.t) as a restricted view on global ↵Xavier Leroy2014-11-261-3/+3
| | | | environments (type Genv.t). Use symbol environments instead of global environments for external functions (module Events).
* Verification of the Unusedglob pass (removal of unreferenced static global ↵Xavier Leroy2014-11-241-0/+1256
definitions). Assorted changes to ia32/Op.v. PowerPC and ARM need updating.