I just got around to test this. Now, `eval-when-comple' seems to be working. Unfortunately, `eval-and-comple' is still broken.
If I do C-u M-C-x eval the following with `debug-on-error' set to t, I get the backtrace below:
Debugger entered--Lisp error: (void-variable edebug-freq-count)
edebug-before(1)
(edebug-after (edebug-before 1) 2 (boundp (quote parse-sexp-lookup-properties)))
(progn (edebug-after (edebug-before 1) 2 (boundp (quote parse-sexp-lookup-properties))))
eval((progn (edebug-after (edebug-before 1) 2 (boundp (quote parse-sexp-lookup-properties)))) nil)
#[128 "\301\302\303 B \"D\207" [lexical-binding quote eval progn] 5 1802730]((edebug-after (edebug-before 1) 2 (boundp (quote parse-sexp-lookup-properties))))
macroexpand((eval-and-compile (edebug-after (edebug-before 1) 2 (boundp (quote parse-sexp-lookup-properties)))) nil)
macroexp-macroexpand((eval-and-compile (edebug-after (edebug-before 1) 2 (boundp (quote parse-sexp-lookup-properties)))) nil)
macroexp--expand-all((eval-and-compile (edebug-after (edebug-before 1) 2 (boundp (quote parse-sexp-lookup-properties)))))
macroexp--all-forms((edebug-after (edebug-before 0) 3 (eval-and-compile (edebug-after (edebug-before 1) 2 (boundp (quote parse-sexp-lookup-properties))))) 1)
#[514 "\300 \301\"\211\204 \302 \242\303\"\202g\304 !\204+\3051$\306\307 ! \"0\202*\310\311 \"\262 \210\312 \242\" \242 =\203b \242\302 \242\303\"\211\262 \232\203J \242\202e \312 \"\240\210\211 \242=\203\\\211\202e\313 !\202e\313 !\262 \207" [function-get compiler-macro macroexp--all-forms 1 functionp (debug error) autoload-do-load indirect-function message "macroexp--expand-all: %S" macroexp--compiler-macro macroexp--expand-all] 8 "\n\n(fn FORM FUNC)"](((edebug-after (edebug-before 0) 3 (eval-and-compile (edebug-after (edebug-before 1) 2 (boundp (quote parse-sexp-lookup-properties)))))) edebug-after)
macroexp--expand-all((edebug-after (edebug-before 0) 3 (eval-and-compile (edebug-after (edebug-before 1) 2 (boundp (quote parse-sexp-lookup-properties))))))
macroexp--all-forms((lambda nil (edebug-after (edebug-before 0) 3 (eval-and-compile (edebug-after (edebug-before 1) 2 (boundp (quote parse-sexp-lookup-properties)))))) 2)
macroexp--expand-all((function (lambda nil (edebug-after (edebug-before 0) 3 (eval-and-compile (edebug-after (edebug-before 1) 2 (boundp (quote parse-sexp-lookup-properties))))))))
macroexp--all-forms((edebug-enter (quote test) (list limit) (function (lambda nil (edebug-after (edebug-before 0) 3 (eval-and-compile (edebug-after (edebug-before 1) 2 (boundp ...))))))) 1)
#[514 "\300 \301\"\211\204 \302 \242\303\"\202g\304 !\204+\3051$\306\307 ! \"0\202*\310\311 \"\262 \210\312 \242\" \242 =\203b \242\302 \242\303\"\211\262 \232\203J \242\202e \312 \"\240\210\211 \242=\203\\\211\202e\313 !\202e\313 !\262 \207" [function-get compiler-macro macroexp--all-forms 1 functionp (debug error) autoload-do-load indirect-function message "macroexp--expand-all: %S" macroexp--compiler-macro macroexp--expand-all] 8 "\n\n(fn FORM FUNC)"](((edebug-enter (quote test) (list limit) (function (lambda nil (edebug-after (edebug-before 0) 3 (eval-and-compile (edebug-after ... 2 ...))))))) edebug-enter)
macroexp--expand-all((edebug-enter (quote test) (list limit) (function (lambda nil (edebug-after (edebug-before 0) 3 (eval-and-compile (edebug-after (edebug-before 1) 2 (boundp ...))))))))
macroexp--all-forms((lambda (limit) (edebug-enter (quote test) (list limit) (function (lambda nil (edebug-after (edebug-before 0) 3 (eval-and-compile (edebug-after ... 2 ...))))))) 2)
macroexp--expand-all((function (lambda (limit) (edebug-enter (quote test) (list limit) (function (lambda nil (edebug-after (edebug-before 0) 3 (eval-and-compile ...))))))))
macroexp--all-forms((defalias (quote test) (function (lambda (limit) (edebug-enter (quote test) (list limit) (function (lambda nil (edebug-after ... 3 ...))))))) 1)
#[514 "\300 \301\"\211\204 \302 \242\303\"\202g\304 !\204+\3051$\306\307 ! \"0\202*\310\311 \"\262 \210\312 \242\" \242 =\203b \242\302 \242\303\"\211\262 \232\203J \242\202e \312 \"\240\210\211 \242=\203\\\211\202e\313 !\202e\313 !\262 \207" [function-get compiler-macro macroexp--all-forms 1 functionp (debug error) autoload-do-load indirect-function message "macroexp--expand-all: %S" macroexp--compiler-macro macroexp--expand-all] 8 "\n\n(fn FORM FUNC)"](((defalias (quote test) (function (lambda (limit) (edebug-enter (quote test) (list limit) (function (lambda nil ...))))))) defalias)
macroexp--expand-all((defun test (limit) (edebug-enter (quote test) (list limit) (function (lambda nil (edebug-after (edebug-before 0) 3 (eval-and-compile (edebug-after ... 2 ...))))))))
macroexpand-all((defun test (limit) (edebug-enter (quote test) (list limit) (function (lambda nil (edebug-after (edebug-before 0) 3 (eval-and-compile (edebug-after ... 2 ...))))))))
eval-sexp-add-defvars((defun test (limit) (edebug-enter (quote test) (list limit) (function (lambda nil (edebug-after (edebug-before 0) 3 (eval-and-compile (edebug-after ... 2 ...))))))))
edebug-eval-defun((4))
apply(edebug-eval-defun (4))
eval-defun((4))
funcall-interactively(eval-defun (4))
call-interactively(eval-defun nil nil)
command-execute(eval-defun)