Skip to content

[PowerPC] li of 0 into arg registers of unused arguments #122728

@diggerlin

Description

@diggerlin

cat > test.c

typedef signed char sb;
void foo(sb);
void __attribute__((noinline)) bar(sb sb1, sb var2, sb var3, sb var4,
                                   sb sb5)
{
  foo(sb5);
}
void __attribute__((noinline)) test() {
  bar(1, 2, 3, 4, 125);
}

bash-5.2$ clang -O2 seg.c -m32 -S -o seg.s

there is code as


.bar:
# %bb.0:                                # %entry
        mflr 0
        stwu 1, -64(1)
        mr      3, 7
        stw 0, 72(1)
        bl .foo[PR]
        nop
        addi 1, 1, 64
        lwz 0, 8(1)
        mtlr 0
        blr


.test:
# %bb.0:                                # %entry
        mflr 0
        stwu 1, -64(1)
        li 3, 0
        li 4, 0
        li 5, 0
        li 6, 0
        stw 0, 72(1)
        li 7, 125
        bl .bar
        nop

the asm code should be optimized out

        li 3, 0
        li 4, 0
        li 5, 0
        li 6, 0

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions