[llvm-dev] Additional instructions created

Barbora Murinová via llvm-dev llvm-dev at lists.llvm.org
Mon Jan 29 14:47:32 PST 2018


Hi all,

I've got a few new registers and I've extended the pointer size to be 128
bits. For allocas, that is done by adding another SelectionDAG after
FrameIndex that extends it to 128 bits. That seems to work okay, except
that the final representation throws in additional instructions. For
example for a piece of code such as:

int a;
int* pointer = &a;

it returns

pushq   %rbp
        .cfi_def_cfa_offset 16
        .cfi_offset %rbp, -16
        movq    %rsp, %rbp
        .cfi_def_cfa_register %rbp
        xorl    %eax, %eax
        leaq    -4(%rbp), %poi0
        leaq    -32(%rbp), %rcx
        movq   %rcx, %poi1
        leaq    -4(%rbp), %rcx
        movq   %rcx, %poi2
        movaps  %poi2, (%poi1)
        bndmov  %poi0, -48(%rbp)        # 16-byte Folded Spill
        popq    %rbp
        retq

The instructions in red should not be there, otherwise, everything is fine.
Does anyone know what could be causing this?

Thanks,
Barbora

-- 
----------------
Barbora Murinová
The University of Edinburgh
SK: +421905718390
UK: +447477833795
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180129/fcefb7ff/attachment.html>


More information about the llvm-dev mailing list