diff --git a/module/language/tree-il/primitives.scm b/module/language/tree-il/primitives.scm index 0fe444567..c18d2b8a9 100644 --- a/module/language/tree-il/primitives.scm +++ b/module/language/tree-il/primitives.scm @@ -255,14 +255,17 @@ (define local-definitions (make-hash-table)) - (let collect-local-definitions ((x x)) - (record-case x - (( name) - (hashq-set! local-definitions name #t)) - (( head tail) - (collect-local-definitions head) - (collect-local-definitions tail)) - (else #f))) + ;; Assume that any definitions with primitive names in the root module + ;; have the same semantics as the primitives. + (unless (eq? mod the-root-module) + (let collect-local-definitions ((x x)) + (record-case x + (( name) + (hashq-set! local-definitions name #t)) + (( head tail) + (collect-local-definitions head) + (collect-local-definitions tail)) + (else #f)))) (post-order (lambda (x)