amd64: Use member class for aggregate parameter temporary

Otherwise, we may end up using an integer and floating class for the
same register, triggering an assertion failure:

	qbe: rega.c:215: pmrec: Assertion `KBASE(pm[i].cls) == KBASE(*k)' failed.

Test case:

	type :T = { s }
	function $d(:T %.1, s %.2) {
		call $c(s %.2)
fold: Don't fold invalid addition/subtraction rather than failing

This may happen in a branch QBE doesn't realize is unreachable,
for example (simplified from real code found in ncurses)

	data $str = { b "abcdef", b 0 }
	function l $f(w %x) {
		%.1 =w ceqw %x, 0
		jnz %.1, @logic_join, @logic_right
		%p =l call $strchr(l $str, w %x)
		%.2 =w ceql %p, 0
		%.3 =w phi @start %.1, @logic_right %.2
		jnz %.3, @fail, @return
		ret 0
		%.4 =l sub %p, $str
		ret %.4
fold: Prevent error when address is used as operand
Increase NString to 96
amd64: Fix floating-point equality check with NaN

arm64 does not have the same issue, and the added test passes there
as well.
Merge remote-tracking branch 'origin/master'
rega: Fix allocation of multiple temporaries to the same register
Fix a few uses of gassym missed in 9e7e5bff
Fix a few uses of gassym missed in 9e7e5bff
Merge remote-tracking branch 'origin/master'
arm64: Handle stack allocations larger than 4095 bytes

In this case, the immediate is too large to use directly in the add/sub
instructions, so move it into a temporary register first.

Also, for clarity, rearrange the if-conditions so that they match the
constraints of the instructions that immediately follow.
arm64: Handle truncd instruction
arm64: Use 32-bit register name when loading 'b' or 'h' into 'l'

The ldrb and ldrh instructions require a 32-bit register name for the
destination and will clear the upper 32-bits of that register.
Allow specifying literal global names
Merge remote-tracking branch 'origin/master'
Allow specifying literal global names
72f2e844 — Quentin Carbonneaux 8 months ago
drop dead declaration
1b1a7f61 — Quentin Carbonneaux 8 months ago
fix a bad bug in copy detection

The code used to see add 0, 10 as
a copy of 0.
arm64: Prevent stack clobber when passing structures < 8 bytes
arm64: Handle slots in Ocopy operands