Ensure that arbitrary DEFUN clears struct slot accessor transforms.
commitc8a6e8a2fdd9ba465f16b2633d27245cb57afb72
authorDouglas Katzman <dougk@google.com>
Wed, 16 Dec 2015 03:54:09 +0000 (15 22:54 -0500)
committerDouglas Katzman <dougk@google.com>
Wed, 16 Dec 2015 23:20:30 +0000 (16 18:20 -0500)
tree284adaa3b9d815fd2a0516ba8a20ca5c154a1663
parentdbd1e44e608cae212105add655ea74752a971c32
Ensure that arbitrary DEFUN clears struct slot accessor transforms.

Excluding the DEFUNs that define out-of-line accessors, of course.

This is done in a way that eliminates reliance on the evaluator to expose
a function's sexpr to decide whether to remove a source-transform,
and more generally solves the problem cited in lp#540063 that compiling
inline/notinline calls were at odds with one another after modifying the
definition of a function that was auto-generated by DEFSTRUCT.

And don't ever store inline expansions for slot accessors.
NEWS
src/code/defboot.lisp
src/code/defstruct.lisp
src/code/setf.lisp
src/compiler/globaldb.lisp
src/compiler/info-functions.lisp
src/compiler/ir1tran-lambda.lisp
tests/defstruct.impure.lisp