[llvm-bugs] [Bug 36138] New: X86II::getMemoryOperandNo misses somewhat common memory operands

via llvm-bugs llvm-bugs at lists.llvm.org
Mon Jan 29 11:27:03 PST 2018


https://bugs.llvm.org/show_bug.cgi?id=36138

            Bug ID: 36138
           Summary: X86II::getMemoryOperandNo misses somewhat common
                    memory operands
           Product: new-bugs
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: chandlerc at gmail.com
                CC: craig.topper at gmail.com, llvm-bugs at lists.llvm.org

I had cause to use this API, and my current primary use case makes it important
to look at what instructions it *doesn't* handle but do return `true` for
`MI.mayLoad()`.

Some are obvious and working as intended: MFENCE, TRAP.

Some were surprising. These are MI.dump() outputs from building the test suite
+ SPEC:

(lots of FP80 stuff)
WARNING: unable to sanitize loading instruction:   %59:rfp80 = LD_Fp80m
%44:gr64, 4, %28:gr64_nosp, 0, %noreg, implicit-def dead %fpsw, debug-location
!5941; mem:LD10[%uglygep105106](align=16)(tbaa=!2343)
WARNING: unable to sanitize loading instruction:   %53:rfp80 = DIV_Fp80m64
%2:rfp80, %stack.5, 1, %noreg, 0, %noreg, implicit-def dead %fpsw,
debug-location !42; mem:LD8[FixedStack5]
WARNING: unable to sanitize loading instruction:   %62:rfp80 = SUBR_Fp80m64
%14:rfp80, %stack.8, 1, %noreg, 0, %noreg, implicit-def dead %fpsw,
debug-location !53; mem:LD8[FixedStack8]
WARNING: unable to sanitize loading instruction:   %63:rfp80 = ILD_Fp64m80
%stack.0, 1, %noreg, 0, %noreg, implicit-def dead %fpsw, debug-location !3617;
mem:LD8[FixedStack0]
WARNING: unable to sanitize loading instruction:   %127:rfp80 = MUL_Fp80m32
killed %126:rfp80, %71:gr64, 1, %noreg, 0, %noreg, implicit-def dead %fpsw,
debug-location !1957; mem:LD4[%ptr.0.lcssa](tbaa=!1261)

(this one really surprised me)
WARNING: unable to sanitize loading instruction:   %38:gr8 = ACQUIRE_MOV8rm
%rip, 1, %noreg,
@_ZGVZNK16ParameterHandler3getERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE12empty_stringB5cxx11,
%noreg, debug-location !5338; mem:Volatile LD1[bitcast (i64*
@_ZGVZNK16ParameterHandler3getERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE12empty_stringB5cxx11
to i8*)](align=8)

WARNING: unable to sanitize loading instruction:   REP_MOVSQ_64 implicit-def
dead %rcx, implicit-def dead %rdi, implicit-def dead %rsi, implicit %rcx,
implicit %rdi, implicit %rsi, debug-location !138


All of these seem to have reasonable memory operands to point at...

There is also one where I'm not really sure whether we should point at the
memory operands or not:
WARNING: unable to sanitize loading instruction:   TCRETURNmi64 %0:gr64_tc, 1,
%noreg, 16, %noreg, 0, <regmask %bh %bl %bp %bpl %bx %ebp %ebx %rbp %rbx %r12
%r13 %r14 %r15 %r12b %r13b %r14b %r15b %r12d %r13d %r14d %r15d %r12w %r13w
%r14w %r15w>, implicit %rsp, implicit %ssp, implicit %rdi, debug-location !73;
mem:LD8[%output_message9](tbaa=!11)


Anyways, mentioned this to Craig and it seemed worth filing a bug to track.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20180129/ec82f142/attachment-0001.html>


More information about the llvm-bugs mailing list