Skip to content

[llc] incorrect stackmap generated for arm64 #117757

@lzheng5

Description

@lzheng5

Hello,

We believe the following generated stackmap for the attached case is wrong. This only happens on arm64. x64 is correct.

Please refer to https://llvm.org/docs/StackMaps.html#stackmap-format.

    uint8  : Register | Direct | Indirect | Constant | ConstantIndex
    uint8  : Reserved (expected to be 0)
    uint16 : Location Size
    uint16 : Dwarf RegNum
    uint16 : Reserved (expected to be 0)
    int32  : Offset or SmallConstant

[bad]

Ltmp9-_next_criticals967_code7BCE

        .byte	3 # Indirect
	.byte	0 
	.short	8
	.short	19 # RegNum (wrong)
	.short	0
	.long	56 # Offset (wrong)

[good]

Ltmp9-_next_criticals967_code7BCE

        .byte	3 # Indirect
	.byte	0 
	.short	8
	.short	29 # RegNum (correct)
	.short	0
	.long	-56 # Offset (correct)

r29 should the frame register on arm64. And the offset should be negative.

llc --version
LLVM (http://llvm.org/):
  LLVM version 17.0.2
  Optimized build.
  Default target: arm64-apple-darwin23.6.0
  Host CPU: apple-m1

Thanks,
Ling

Metadata

Metadata

Assignees

No one assigned

    Labels

    backend:AArch64questionA question, not bug report. Check out https://llvm.org/docs/GettingInvolved.html instead!

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions