summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog34
-rw-r--r--README21
2 files changed, 43 insertions, 12 deletions
diff --git a/Changelog b/Changelog
index 7a49998..2842d3b 100644
--- a/Changelog
+++ b/Changelog
@@ -1,6 +1,21 @@
Release 1.8
===========
+- The input language to the proved part of the compiler is no longer
+ Clight but CompCert C: a larger subset of the C language supporting
+ in particular side-effects within expressions. The transformation
+ that pulls side effects out of expressions, formerly performed by
+ untrusted Caml code, is now fully proved in Coq.
+
+- New port targeting Intel/AMD x86 processors. Generates 32-bit x86 code
+ using SSE2 extensions for floating-point arithmetic. Works under
+ Linux, *BSD, MacOS X, and the Cygwin environment for Windows.
+ CompCert's compilation strategy is not a very good match for the
+ x86 architecture, therefore the performance of the generated code
+ is not as good as for the PowerPC port, but still usable.
+ (About 75% of the performance of gcc -O1 for x86, compared with
+ > 90% for PowerPC.)
+
- More faithful semantics for volatile accesses:
. volatile reads and writes from a volatile global variable are treated
like input and output system calls (respectively), bypassing
@@ -8,13 +23,11 @@ Release 1.8
. volatile reads and writes from other locations are treated like
regular loads and stores.
-- Added "fabs" (floating-point absolute value) unary operator to Clight;
- map __builtin_fabs() to this operator.
-
-- Introduced __builtin_memcpy() and __builtin_memcpy_words, use them
+- Introduced __builtin_memcpy() and __builtin_memcpy_words(), use them
instead of memcpy() to compile struct and union assignments.
-- Better instruction selection for "globvar[expr + cst]" memory accesses.
+- Introduced __builtin_annotation() to transmit assertions from
+ the source program all the way to the generated assembly code.
- Elimination of some useless casts around "&", "|" and "^" bitwise operators.
@@ -22,11 +35,14 @@ Release 1.8
rest of compilation and slightly improves the result of register
allocation when register pressure is high.
-- Implemented a spilling heuristic during register allocation.
- This heuristic reduces significantly the amount of spill code
- generated when register pressure is high.
+- Improvements in register allocation:
+ . Implemented a spilling heuristic during register allocation.
+ This heuristic reduces significantly the amount of spill code
+ generated when register pressure is high.
+ . More coalescing between low-pressure and high-pressure variables.
+ . Aggressive coalescing between pairs of spilled variables.
-- Implemented aggressive coalescing between pairs of spilled variables.
+- Fixed some bugs in the emulation of bit fields.
Release 1.7.1, 2010-04-13
diff --git a/README b/README
index 44a845e..29cd47f 100644
--- a/README
+++ b/README
@@ -39,6 +39,9 @@ SUPPORTED PLATFORMS:
- ARM / Linux [experimental]
For ARM machines running the Linux operating system.
+- IA32 / Linux, BSD, MacOS [experimental]
+ For Intel/AMD x86 processors with SSE2 extensions
+ (i.e. Pentium 4 and later).
PREREQUISITES:
@@ -46,7 +49,7 @@ PREREQUISITES:
the search path. For MacOS X, you can get them by installing the
XCode development tools, as found on the installation DVDs.
-* The Coq proof assistant, version 8.2-1 or later.
+* The Coq proof assistant, version 8.2pl1 or 8.2pl2.
Coq is free software, available from http://coq.inria.fr/
* The Caml functional language, version 3.10 or later.
@@ -64,6 +67,9 @@ where <target> is one of:
ppc-macosx (PowerPC, MacOS X)
ppc-linux (PowerPC, Linux)
arm-linux (ARM, Linux)
+ ia32-linux (x86 SSE2 32 bits, Linux)
+ ia32-bsd (x86 SSE2 32 bits, BSD)
+ ia32-macosx (x86 SSE2 32 bits, MacOS X)
This generates the Makefile.config file in the top directory.
@@ -74,6 +80,7 @@ The "configure" script accepts the following options:
-libdir <dir> (default: /usr/local/lib/compcert)
Directory where the Compcert support library will be installed
+ (needed only under MacOS X)
-prefix <dir> (default: /usr/local)
Set bindir and libdir to
@@ -143,7 +150,7 @@ Preprocessing options:
-U<symb> Undefine preprocessor symbol
Language support options (use -fno-<opt> to turn off -f<opt>) :
-fbitfields Emulate bit fields in structs [off]
- -flonglong Treat 'long long' as 'long' and 'long double' as 'double' [off]
+ -flonglong Partial emulation of 'long long' types [on]
-fstruct-passing Emulate passing structs and unions by value [off]
-fstruct-assign Emulate assignment between structs or unions [off]
-fvararg-calls Emulate calls to variable-argument functions [on]
@@ -153,14 +160,22 @@ Code generation options:
-fsmall-const <n> Set maximal size <n> for allocation in small constant area
Tracing options:
-dparse Save C file after parsing and elaboration in <file>.parse.c
+ -dc Save generated Compcert C in <file>.compcert.c
-dclight Save generated Clight in <file>.light.c
+ -dcminor Save generated Cminor in <file>.cm
+ -drtl Save unoptimized generated RTL in <file>.rtl
+ -dtailcall Save RTL after tail call optimization in <file>.tailcall.rtl
+ -dcastopt Save RTL after cast optimization in <file>.castopt.rtl
+ -dconstprop Save RTL after constant propagation in <file>.constprop.rtl
+ -dcse Save RTL after CSE optimization in <file>.cse.rtl
+ -dalloc Save LTL after register allocation in <file>.alloc.ltl
-dasm Save generated assembly in <file>.s
Linking options:
-l<lib> Link library <lib>
-L<dir> Add <dir> to search path for libraries
-o <file> Generate executable in <file> (default: a.out)
General options:
- -stdlib <dir> Set the path of the Compcert run-time library
+ -stdlib <dir> Set the path of the Compcert stdlib wrappers
-v Print external commands before invoking them