This patch fixes bug 17855, an ICE on code which tries to modify
certain non-lvalue arrays (in structures in function returns or
conditional expressions); this code is valid as long as it is never
executed. The fix (entirely outside the C front end) arranges for
temporary variables to be created (fixing the first ICE) and for those
variables to be marked addressable (fixing the second ICE which was
encountered with the first attempt at a fix discussed in that PR).
Bootstrapped with no regressions, mainline and 4.0 branch, on
x86_64-unknown-linux-gnu. OK to commit?