aboutsummaryrefslogtreecommitdiff
path: root/lldb/test/API/python_api/name_lookup
diff options
context:
space:
mode:
authorCullen Rhodes <cullen.rhodes@arm.com>2026-02-02 10:04:12 +0000
committerGitHub <noreply@github.com>2026-02-02 10:04:12 +0000
commitf288f463ad0e7bb9c48198a2bbc2f8b979b986cf (patch)
tree6b7d746db260983a37cf170ce957dd83ea63d5b7 /lldb/test/API/python_api/name_lookup
parent2f3935bcee6eaf7df8c85a21b7c0fbef967316b5 (diff)
downloadllvm-main.zip
llvm-main.tar.gz
llvm-main.tar.bz2
[AArch64][GlobalISel] Constrain G_CONSTANT_FOLD_BARRIER operand register classes (#177997)HEADmain
[AArch64][GlobalISel] Constrain G_CONSTANT_FOLD_BARRIER operand Instruction selection is lowering: bb.1: %6:gpr(s64) = G_CONSTANT i64 457873110 ... bb.2: %12:gpr(s64) = G_CONSTANT_FOLD_BARRIER %6 %24:gpr(s64) = G_CONSTANT i64 0 %13:gpr(s64) = G_AND %24, %12 ... to: %13:gpr64 = ANDXrr %24:gpr64, %6:gpr64sp' which is causing the verifier to fail with: Expected a GPR64 register, but got a GPR64sp register the reason for this is there are multiple G_CONSTANT_FOLD_BARRIER ops with the same input register: Select: %14:gpr64sp(s64) = G_CONSTANT_FOLD_BARRIER %6:gpr Erasing: %14:gpr64sp(s64) = G_CONSTANT_FOLD_BARRIER %6:gpr64sp -- Select: %12:gpr64(s64) = G_CONSTANT_FOLD_BARRIER %6:gpr64sp Erasing: %12:gpr64(s64) = G_CONSTANT_FOLD_BARRIER %6:gpr64 -- Select: %7:gpr64sp(s64) = G_CONSTANT_FOLD_BARRIER %6:gpr64 Erasing: %7:gpr64sp(s64) = G and the middle one used by the AND gets overridden by last and becomes invalid. this patch fixes this by constraining the register class such that the middle one gets constrained to the subset of gpr64sp and gpr64, i.e. gpr64common: Select: %14:gpr64sp(s64) = G_CONSTANT_FOLD_BARRIER %6:gpr Erasing: %14:gpr64sp(s64) = G_CONSTANT_FOLD_BARRIER %6:gpr64sp -- Select: %12:gpr64(s64) = G_CONSTANT_FOLD_BARRIER %6:gpr64sp Erasing: %12:gpr64(s64) = G_CONSTANT_FOLD_BARRIER %6:gpr64common -- Select: %7:gpr64sp(s64) = G_CONSTANT_FOLD_BARRIER %6:gpr64common Erasing: %7:gpr64sp(s64) = G_CONSTANT_FOLD_BARRIER %6:gpr64common canReplaceReg doesnt handle when both regs already have classes so the assert is removed. Fixes #166563.
Diffstat (limited to 'lldb/test/API/python_api/name_lookup')
0 files changed, 0 insertions, 0 deletions