Drop compilation-database entries which produce shared or position-independent code.
Function:
(defun comp-db-drop-shared (db) (declare (xargs :guard (comp-dbp db))) (b* ((db (comp-db-fix db)) ((when (endp db)) nil) (entry (cdr (first db))) (drop (or (member-equal (make-comp-db-arg :name "-fPIC" :separator "" :value nil) (comp-db-entry->arguments entry)) (member-equal (make-comp-db-arg :name "-fpic" :separator "" :value nil) (comp-db-entry->arguments entry))))) (if drop (comp-db-drop-shared (rest db)) (cons (first db) (comp-db-drop-shared (rest db))))))
Theorem:
(defthm comp-dbp-of-comp-db-drop-shared (b* ((db$ (comp-db-drop-shared db))) (comp-dbp db$)) :rule-classes :rewrite)
Theorem:
(defthm comp-db-drop-shared-of-comp-db-fix-db (equal (comp-db-drop-shared (comp-db-fix db)) (comp-db-drop-shared db)))
Theorem:
(defthm comp-db-drop-shared-comp-db-equiv-congruence-on-db (implies (comp-db-equiv db db-equiv) (equal (comp-db-drop-shared db) (comp-db-drop-shared db-equiv))) :rule-classes :congruence)