[llvm-dev] Ok with mismatch between dead-markings in BUNDLE and bundled instructions?

Matthias Braun via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 27 14:51:15 PDT 2017


> On Jun 27, 2017, at 2:44 PM, Krzysztof Parzyszek via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> On 6/27/2017 4:35 PM, Quentin Colombet via llvm-dev wrote:
>> Yeah I was reading this as “only the non-touched part are dead”, and that’s what I’d like to see in the representation longer. Obviously, the register is not dead as a whole here :)
> 
> I think that having two defs for the same register, one dead and one not dead simply doesn't make sense. We already assume that a register is live if at least a part of it is live, so if it's "dead", it should mean that the whole thing is dead.
Without subregister I would agree. However with subregisters and aliases in play you can express more situations. Like for example:

    %rax<dead>, %eax = ...

could mean the instruction writes the full rax register but we are only gonna read eax later. That said I am not sure whether we actually need it, and if llvm works that way today. Given how subtle all of this is there is also a high danger that we won't get the bahviour consistent.

- Matthias


More information about the llvm-dev mailing list