We continue our program of improving the complexity of so-called Boltzmann sampling algorithms, for the exact sampling of combinatorial structures, and reach average linear-time complexity, i.e. optimality up to a multiplicative constant. Here we solve this problem for irreducible context-free structures, a broad family of structures to which the celebrated Drmota--Lalley--Woods Theorem applies. Our algorithm is a rejection algorithm. The main idea is to single out some degrees of freedom, i.e. write $p(x)=p_1(y) p_2(x|y)$, which allows to introduce a rejection factor at the level of the $y$ object, that is almost surely of order $1$.