SUGGESTED FIX
*** /tmp/geta22905 Tue Jan 16 13:53:53 2007
--- c1_LIRGenerator.cpp Tue Jan 16 13:53:51 2007
***************
*** 136,144 ****
assert(node == NULL || node->operand() == opr, "");
if (node == NULL) {
node = new ResolveNode(opr);
- if (source) virtual_operands().append(node);
vreg_table()[vreg_num] = node;
}
} else {
assert(source, "");
node = new ResolveNode(opr);
--- 136,148 ----
assert(node == NULL || node->operand() == opr, "");
if (node == NULL) {
node = new ResolveNode(opr);
vreg_table()[vreg_num] = node;
}
+ // Make sure that all virtual operands show up in the list when
+ // they are used as the source of a move.
+ if (source && !virtual_operands().contains(node)) {
+ virtual_operands().append(node);
+ }
} else {
assert(source, "");
node = new ResolveNode(opr);
|