annotate .hgtags @ 418:3832a68d83ef

Fix internal compiler error on "var2 = var1 + 1" patterns This appears to be the correct fix. It was provided by Tormod Volden (debian.tormod@gmail.com). The final commit is substantially different from Tormod's submission mostly due to housecleaning (removing the old patches and updating the README). Tormod's comments follow. The original addhi_mem_1 "insn" instruction pattern /matches/ two memory operands, just with the /constraint/ that these are the same location. A pattern match tells the compiler "you should be able to use this, but you might have to work on it to meet the constraints". For typical constraints on registers the compiler can add "reloads", moving stuff between registers or from memory, until the constraints are met and the instruction can be used. However, in this case, no amount of reloads can make two memory locations the same if they already weren't, so the compiler breaks down and cries "unable to generate reloads". It seems this issue only appears if optimization is enabled. The proof is in gcc's reload.c and is left as an exercise to the reader. Limiting the matching pattern to identical memory operands avoids these situations, while allowing the common "var++" cases. References: The pattern/constraints difference is explained in https://gcc.gnu.org/onlinedocs/gccint/Simple-Constraints.html#index-other-register-constraints-3335
author William Astle <lost@l-w.ca>
date Tue, 29 Mar 2016 21:21:49 -0600
parents 4cf907aa634c
children d15399d94386
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
66
0359d9f1dfca Added tag lwtools-4.0 for changeset 05f1a31f8f1e
lost@l-w.ca
parents:
diff changeset
1 05f1a31f8f1ea8a59304f8e2a330556e39853239 lwtools-4.0
97
93ff2c8414f4 Added tag lwtools-4.2 for changeset 8ee33204fa79
lost@l-w.ca
parents: 66
diff changeset
2 8ee33204fa7933ef68136780253b0b95645f4ace lwtools-4.2
99
1cb23a4e1e7d Removed tag lwtools-4.2
lost@l-w.ca
parents: 97
diff changeset
3 8ee33204fa7933ef68136780253b0b95645f4ace lwtools-4.2
1cb23a4e1e7d Removed tag lwtools-4.2
lost@l-w.ca
parents: 97
diff changeset
4 0000000000000000000000000000000000000000 lwtools-4.2
100
7ce01324e391 Added tag lwtools-4.2 for changeset 1cb23a4e1e7d
lost@l-w.ca
parents: 99
diff changeset
5 0000000000000000000000000000000000000000 lwtools-4.2
7ce01324e391 Added tag lwtools-4.2 for changeset 1cb23a4e1e7d
lost@l-w.ca
parents: 99
diff changeset
6 1cb23a4e1e7d5962a4bb93237dd25001bf40204c lwtools-4.2
121
27b51723b218 Added tag lwtools-4.3 for changeset d90ab253471e
lost@l-w.ca
parents: 100
diff changeset
7 d90ab253471eafe8eb02a90e67159ea909b033e9 lwtools-4.3
124
169018bd9ada Added tag lwtools-4.4 for changeset 74b4e9f23c62
lost@l-w.ca
parents: 121
diff changeset
8 74b4e9f23c62e2a4d52d5880c88fb57737f80b39 lwtools-4.4
203
b5459ed6fed9 Added tag lwtools-4.5 for changeset 47a055c57d4a
William Astle <lost@l-w.ca>
parents: 124
diff changeset
9 47a055c57d4ab76ef479a3d9a0241fd3b7cfdff7 lwtools-4.5
214
ff024e572ff2 Added tag lwtools-4.6 for changeset 38ecb99d78dd
William Astle <lost@l-w.ca>
parents: 203
diff changeset
10 38ecb99d78dd5177873ffb5a13e25295348bad9b lwtools-4.6
244
5fefceb6756b Added tag lwtools-4.7 for changeset 65510f1574e4
William Astle <lost@l-w.ca>
parents: 214
diff changeset
11 65510f1574e4e729efac9f20003ef8d29118f6cf lwtools-4.7
278
95c941799c8e Added tag lwtools-4.8 for changeset 1dcc0b174e3b
William Astle <lost@l-w.ca>
parents: 244
diff changeset
12 1dcc0b174e3b340702a33182acc6cf8274ccbe4e lwtools-4.8
318
bcd1daabdb2e Added tag lwtools-4.9 for changeset 21ecf29b568e
William Astle <lost@l-w.ca>
parents: 278
diff changeset
13 21ecf29b568ea6a9df18309f035be11bc5b955f8 lwtools-4.9
328
15125b7c865f Added tag lwtools-4.10 for changeset f3592d276aed
William Astle <lost@l-w.ca>
parents: 318
diff changeset
14 f3592d276aedcf0c4dd5d81349b21f8ce2ebc3d1 lwtools-4.10
353
e1f4d5af6438 Added tag lwtools-4.11 for changeset fd96bb4a9c8d
William Astle <lost@l-w.ca>
parents: 328
diff changeset
15 fd96bb4a9c8d2451b85703e49edc136b560cd206 lwtools-4.11
398
4cf907aa634c Added tag lwtools-4.12 for changeset d7870f1e9121
William Astle <lost@l-w.ca>
parents: 353
diff changeset
16 d7870f1e912196d96e606f7904db3e4f940ab4b7 lwtools-4.12