[DebugInfo] Re-engineer a test to be stricter, add XFails

In the LLVM-IR for this test, the inlined argument "b" in the "a" function
is optimized out on certain architectures, not on others. This hasn't been
reported as a test failure since 93faeecd8f and ff2073a51 because we would
create a variable that looks like this:

  DW_TAG_formal_parameter
    DW_AT_abstract_origin

With no further information (and no location). With D95617 however, we
stop emitting such variables.

Prior to landing D95617: make this test stricter by checking that the
variable mentioned above has a location. We have to accept that on certain
architectures this goes missing, so add those to the XFail list.

I've run a few experiments, and right now it looks likely only powerpc64
still drops the variable location.
This commit is contained in:
Jeremy Morse 2021-02-08 09:54:01 +00:00
parent b46aac125d
commit e05c10380c

View File

@ -1,5 +1,10 @@
; RUN: %llc_dwarf -O0 -filetype=obj < %s | llvm-dwarfdump -v -debug-info - | FileCheck %s
; The formal parameter 'b' for Function 'x' when inlined within 'a' is lost on
; powerpc64 (and on x86_64 at at least -O2). Presumably this is a SelectionDAG
; issue.
; XFAIL: powerpc64
; Build from the following source with clang -O2.
; The important details are that 'x's abstract definition is first built during
@ -78,6 +83,7 @@
; fastisel succeeds).
; CHECK: DW_TAG_formal_parameter
; CHECK-NOT: DW_TAG
; CHECK: DW_AT_location
; CHECK: DW_AT_abstract_origin {{.*}} "b"
; CHECK-NOT: {{DW_TAG|NULL}}