https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84964
--- Comment #22 from Segher Boessenkool <segher at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #21) > It did so even before my or Roger's patch. It was my first successful bootstrap in a few days, and I replied to this old PR without looking everywhere else first. > As I wrote in PR105023, the problem is that the rs6000 backend decides to > pass that huge (2 Exabytes long) argument partially in registers (reg:BLK 3 > 3) and partially on the stack, It isn't the backend that decides to do that. The backend correctly does what the ABI requires here: pass up to eight things in GPRs, and the rest in the parameter save area (on the stack) (this is ignoring FPRs and the like, for simplicity). > while on most other backends it is passed > just on the stack and we sorry at that point instead of trying to overwrite > compiler's memory. (reg:BLK 3 3) looks just way too suspect to me, do we > pass say 256 byte long homogenous structures that way too? reg:BLK is invalid always, :BLK is valid on memory only.