Amara Emerson <> changed:

           What    |Removed                     |Added
         Resolution|---                         |WONTFIX
             Status|NEW                         |RESOLVED

--- Comment #16 from Amara Emerson <> ---
Ok this isn't really a bug, this is a code generation difference between using
SelectionDAG and FastISel. GlobalISel is only involved indirectly, since at -O0
GISel replaces FastISel and falls back to SelectionDAG, whereas before FastISel
would handle the block with the inline ASM and not fall back to SDAG.

FastISel has some specialized code in FastISel.cpp:fastEmitBranch() that will
check if the successor block is the target of the unconditional branch, in
which case it will not emit anything. SelectionDAG doesn't do that, so when
GlobalISel gives up on the block, instead of trying FastISel, we fall back to
SDAG and end up with the extra branch.

This is expected behavior in terms of falling back to SDAG, so I think the test
needs to be updated to handle this new codegen.

You are receiving this mail because:
You are on the CC list for the bug.
llvm-bugs mailing list

Reply via email to