Filter out compilation-database arguments which are disruptive or irrelevant to preprocessing.
Generally, it seems easier to blacklist arguments which are disruptive to
preprocessing than it is to whitelist the preprocessing-relevant
arguments. Most flags do not prevent us from preprocessing, and some are
surprisingly relevant to preprocessing (fir instance, the
Function:
(defun comp-db-keep-only-preprocessor-args (db) (declare (xargs :guard (comp-dbp db))) (b* ((db (comp-db-fix db)) ((when (endp db)) nil) (file (car (first db))) (entry (cdr (first db))) (arguments (comp-db-arguments-keep-only-preprocessor-args (comp-db-entry->arguments entry))) (entry (change-comp-db-entry entry :arguments arguments))) (acons file entry (comp-db-keep-only-preprocessor-args (rest db)))))
Theorem:
(defthm comp-dbp-of-comp-db-keep-only-preprocessor-args (b* ((db$ (comp-db-keep-only-preprocessor-args db))) (comp-dbp db$)) :rule-classes :rewrite)
Theorem:
(defthm comp-db-keep-only-preprocessor-args-of-comp-db-fix-db (equal (comp-db-keep-only-preprocessor-args (comp-db-fix db)) (comp-db-keep-only-preprocessor-args db)))
Theorem:
(defthm comp-db-keep-only-preprocessor-args-comp-db-equiv-congruence-on-db (implies (comp-db-equiv db db-equiv) (equal (comp-db-keep-only-preprocessor-args db) (comp-db-keep-only-preprocessor-args db-equiv))) :rule-classes :congruence)