diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 6c5051d70c4..a0063cbef7b 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -3570,8 +3570,6 @@ byte-compile-form
                 (setq form (cons 'progn (cdr form)))
                 (setq handler #'byte-compile-progn))
                ((and (or sef (function-get (car form) 'important-return-value))
-                     ;; Don't warn for arguments to `ignore'.
-                     (not (eq byte-compile--for-effect 'for-effect-no-warn))
                      (byte-compile-warning-enabled-p
                       'ignored-return-value (car form)))
                 (byte-compile-warn-x
@@ -4515,8 +4513,11 @@ byte-compile-goto-if
 
 (defun byte-compile-ignore (form)
   (dolist (arg (cdr form))
-    ;; Compile each argument for-effect but suppress unused-value warnings.
-    (byte-compile-form arg 'for-effect-no-warn))
+    ;; Compile args for value (to avoid warnings about unused values),
+    ;; emit a discard after each, and trust the LAP peephole optimiser
+    ;; to annihilate useless ops.
+    (byte-compile-form arg)
+    (byte-compile-discard))
   (byte-compile-form nil))
 
 ;; Return the list of items in CONDITION-PARAM that match PRED-LIST.
-- 
2.42.0

