-
Notifications
You must be signed in to change notification settings - Fork 14.7k
Description
I'm trying to write a test for some changes I'm making to SelectionDAGBuilder. The RUN:
lines of my FileCheck
tests on LLVM IR have llc -mtriple=aarch64-linux-gnu /tmp/x.ll -stop-after=finalize-isel -o - -global-isel=0 -fast-isel=0
.
To isolate my test to testing isel, if I add: -start-before=finalize-isel
, I no longer get any codegen from llc
. It still prints the input IR and yaml for MIR, but the MIR output is gone.
If I replace -start-before=finalize-isel
with -print-before-all
, I see:
# *** IR Dump Before AArch64 Instruction Selection (amdgpu-isel) ***:
(huh, why is amdgpu-isel
in there?)
On a hunch, testing -start-before=amdgpu-isel
does what I'd have expected from -start-before=finalize-isel
.
Expected:
llc -mtriple=aarch64-linux-gnu /tmp/x.ll -start-before=finalize-isel -stop-after=finalize-isel -o -
Actual:
llc -mtriple=aarch64-linux-gnu /tmp/x.ll -start-before=amdgpu-isel -stop-after=finalize-isel -o -
(Though, adding -print-before-all
to Expected above shows what looks like amdgpu-isel
, then aarch64-local-dynamic-tls-cleanup
, then finalize-isel
being run).
I see the same issue if I change the target triple to -mtriple=x86_64-linux-gnu
as well, so not specific to aarch64 I think. So not tagging this as related to globalisel (since I don't want to test globalisel anyways).