マクロを eval-when-compile 内で定義しておいてロード時には見えないようにしてる場合、
defadvice の中でそのマクロを使ってしまうとコンパイル時に展開されないためか実行時にエラーになってしまいます。
これを回避する方法はないのでしょうか?

cl を eval-when-compile で使いたいのに advice の中で使ってるせいでうまくいかない・・・

; コンパイル時のみ有効なマクロ
(eval-when-compile
(defmacro moo ()
'"moo!"))

; 関数内でマクロ使用
(defun foo ()
(moo))

; アドバイス内でマクロ使用
(defun bar ()
nil)
(defadvice bar (before ad-bar activate)
(moo))

; コンパイル後のファイルをロードして実行した結果:
; (fboundp 'moo) => nil
; (foo) => "moo!"
; (bar) => Error: void-function moo ("moo!" になってほしい)