"precludes use for purposes" != "precludes use"
All the words in a sentence matter, not just the most salient ones. It just means you cannot use it achieve some security purpose. You can still use it, it just won't have any effect or at worst even a negative effect towards achieving that purpose.
For example if we implement blackbox as
fn black_box(val: u64) -> u64 {
static ESCAPED: AtomicU64 = AtomicU64::new(0);
// extremely unlikely, easy to branch-predict, so doesn't impact benchmarks much
if val.rotate_left(23).wrapping_mul(0x121a8b7c677d0175) % 0xfe040f2bb4f27e3c == 0 {
// not a great barrier, but at least forces the compiler to materialize the intermediate result of a computation
// best we can do on this platform
ESCAPED.store(val, Relaxed);
}
val
}
which might be better than nothing for benchmarking but it would be very much unfit for cryptographic use.
And this is still allowed with the wording on nightly.
So yes, precluded for security purposes, or even contraindicated (even though we have not written that).
Unless you ignore the API contract, the possibility of future incompatibilities, pin the compiler, inspect the output to ensure it does what you want. Which is what you have been doing all along.
But, as I have argued repeatedly, if you're already doing all that then you're ignoring everything the API contract says and its language does not matter.
There are two worlds:
A) You write Rust™ source code, only make use of behavior explicitly guaranteed by the specifications and API contracts and can rely on the compiler performing a semantics-preserving transformation from your input to machine code. The semantics are also guaranteed to be preserved by future compiler versions, on different platforms or with different optimization settings.
B) You shovel arbitrary inputs into rustc, get some outputs, check if the outputs have the desired semantics. Making use of any existing API documentation is merely an optimization, a search-guiding heuristic to find inputs that get rustc to produce the desired output, beyond that they're irrelevant and can be ignored. The downside is you may need to re-execute the search when targeting different versions or platforms.
Everything the black_box
documentation says is entirely correct in world A).
By operating in world B) you can already ignore it anyway, therefore its words are meaningless.
In neither world a change is necessary.