On Tue, Aug 14, 2012 at 2:45 PM, Jakub Jelinek <ja...@redhat.com> wrote:
>> >> 2. Passing function arguments in HW registers. >> >> The main problem here is that backward copy propagation phase (aka >> >> combine instructions) can propagate HW argument registers to >> >> instructions evaluating argument values (e.g. issue#46829). To >> >> resolve this problem I decided to preserve an order of instructions >> >> writing to HW function argument registers through additional output >> >> dependencies between two adjacent instructions >> >> (ix86_dependencies_evaluation_hook). >> > >> > Looking a bit deeper into PR46829 problem, it is actually the output >> > of the divide instruction that gets combined with _called_ function >> > argument (r8), before the call to "bar" function. So, this is similar, >> > but separate issue from the propagation of function arguments into >> > insn inputs. >> > >> > In any case, short of disabling propagation of hard registers, >> > recog_for_combine should somehow check if the insn that combines hard >> > regs is still valid. >> >> Yes, that sounds reasonable. > > What kind of checks do you have in mind though? Combiner already tries to > recog the insn, which involves testing all the predicates on the insn. What > else it could do? You mean that for hard registers it should check > constraints too? Yes, with extract_insn perhaps. Uros.