I  want  to  show that different  optimisations   are  being
applied by ecl itself and its invocation of the cc.

In a nutshell  I'm pretty sure that quoted objects end up in
read-only     memory    when   seen    by    #'compile-file.
Reiterating from last time a little,

(defun foo () '(1 2 3))

(disassemble 'foo)

/*       function      definition      for      FOO       */
/*  optimize   speed  3, debug  0, space  0,  safety   2  */
static cl_object L1foo()
{
cl_object env0 = ECL_NIL;
const    cl_env_ptr    cl_env_copy    =   ecl_process_env();
cl_object value0;
ecl_cs_check(cl_env_copy,value0);
{
TTL:
value0 = VV[1];
cl_env_copy->nvalues = 1;
return value0;
}
}

And now I want to see how this ends up when compiling an ecl
source file. Which involves a little bit of undocumented ecl
features.

```foo.ecl
(defun foo () '(1 2 3))
```

(ext:install-compiler)
(setq c::*delete-files* nil)
(compile-file #p\"foo.ecl\")

Now        we       have       the        left        overs:
foo.c
foo.data
foo.ecl
foo.eclh
foo.fas
foo.o

Then, the foo.data include is

static const struct ecl_base_string compiler_data_text1[]  =
{      (int8_t)t_base_string,      0,     ecl_aet_bc,     0,
ECL_NIL, (cl_index)100, (cl_index)100,
(ecl_base_char*)
"common-lisp-user::foo      (1     2     3)     0     (defun
common-lisp-user::foo) (#P\"foo.ecl\" . 0)" };

static    const   cl_object   compiler_data_text[]     =   {
(cl_object)compiler_data_text1,
NULL};

So  I think the ecl compiler  does compilation  between  the
READ and invoking the cc.