https://llvm.org/bugs/show_bug.cgi?id=24789
Bug ID: 24789 Summary: Incorrect codegen for non-standard integer types Product: libraries Version: trunk Hardware: PC OS: All Status: NEW Severity: normal Priority: P Component: Backend: X86 Assignee: unassignedb...@nondot.org Reporter: san...@playingwithpointers.com CC: llvm-bugs@lists.llvm.org Classification: Unclassified Running target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" define i1 @f(i32* %ptr) { entry: %ptr.i10 = bitcast i32* %ptr to i10* %val.i10 = load i10, i10* %ptr.i10 %cmp = icmp eq i10 %val.i10, 77 ret i1 %cmp } through llc -O3 gives .text .file "<stdin>" .globl f .align 16, 0x90 .type f,@function f: # @f .cfi_startproc # BB#0: # %entry movzwl (%rdi), %eax cmpl $77, %eax sete %al retq .Lfunc_end0: .size f, .Lfunc_end0-f .cfi_endproc .section ".note.GNU-stack","",@progbits I think the right behavior here is to mask out the lower 10 bits from %eax before comparing it with $77. -- 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