annotate .hgignore @ 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 f90c9b044220
children 5b8871fd7503
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28
9ac1c97d01db Fixed up hgignore
lost@l-w.ca
parents: 22
diff changeset
1 \.exe$
9ac1c97d01db Fixed up hgignore
lost@l-w.ca
parents: 22
diff changeset
2 \.o$
9ac1c97d01db Fixed up hgignore
lost@l-w.ca
parents: 22
diff changeset
3 \.d$
9ac1c97d01db Fixed up hgignore
lost@l-w.ca
parents: 22
diff changeset
4 \.a$
9ac1c97d01db Fixed up hgignore
lost@l-w.ca
parents: 22
diff changeset
5 ~$
9ac1c97d01db Fixed up hgignore
lost@l-w.ca
parents: 22
diff changeset
6 \.orig$
9ac1c97d01db Fixed up hgignore
lost@l-w.ca
parents: 22
diff changeset
7 /lwbasic$
9ac1c97d01db Fixed up hgignore
lost@l-w.ca
parents: 22
diff changeset
8 /lwlink$
9ac1c97d01db Fixed up hgignore
lost@l-w.ca
parents: 22
diff changeset
9 /lwobjdump$
9ac1c97d01db Fixed up hgignore
lost@l-w.ca
parents: 22
diff changeset
10 /lwar$
9ac1c97d01db Fixed up hgignore
lost@l-w.ca
parents: 22
diff changeset
11 /lwasm$
193
68f41eaf44f2 Added lwcc, lwcpp stubs
lost@l-w.ca
parents: 170
diff changeset
12 /lwcc/lwcc$
68f41eaf44f2 Added lwcc, lwcpp stubs
lost@l-w.ca
parents: 170
diff changeset
13 /lwcc/lwcpp$
363
f90c9b044220 Add some windows related files to the ignore list for hg
William Astle <lost@l-w.ca>
parents: 193
diff changeset
14
f90c9b044220 Add some windows related files to the ignore list for hg
William Astle <lost@l-w.ca>
parents: 193
diff changeset
15 # for windows
f90c9b044220 Add some windows related files to the ignore list for hg
William Astle <lost@l-w.ca>
parents: 193
diff changeset
16 \.suo$
f90c9b044220 Add some windows related files to the ignore list for hg
William Astle <lost@l-w.ca>
parents: 193
diff changeset
17 \.sdf$
f90c9b044220 Add some windows related files to the ignore list for hg
William Astle <lost@l-w.ca>
parents: 193
diff changeset
18 \.opensdf$
f90c9b044220 Add some windows related files to the ignore list for hg
William Astle <lost@l-w.ca>
parents: 193
diff changeset
19 \Debug$
f90c9b044220 Add some windows related files to the ignore list for hg
William Astle <lost@l-w.ca>
parents: 193
diff changeset
20 \Release$