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: unassignedb...@nondot.org
          Reporter: chandl...@gmail.com
                CC: craig.top...@gmail.com, llvm-bugs@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.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to