[llvm-bugs] [Bug 52119] New: LLVM error when using bitshift operators (>> and <<) on 64-bit integers

via llvm-bugs llvm-bugs at lists.llvm.org
Fri Oct 8 18:50:19 PDT 2021


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

            Bug ID: 52119
           Summary: LLVM error when using bitshift operators (>> and <<)
                    on 64-bit integers
           Product: libraries
           Version: trunk
          Hardware: Macintosh
                OS: MacOS X
            Status: NEW
          Severity: normal
          Priority: P
         Component: Backend: M68k
          Assignee: unassignedbugs at nondot.org
          Reporter: annika0uwu at gmail.com
                CC: glaubitz at physik.fu-berlin.de,
                    llvm-bugs at lists.llvm.org, minyihh at uci.edu

Created attachment 25344
  --> https://bugs.llvm.org/attachment.cgi?id=25344&action=edit
Diagnostic report when attempting to compile the generated LLVM-IR with llc.

LLVM's new m68k target can't handle left-shifts and right-shifts of two 64-bit
integers. This bug isn't specific to C or Clang (it can be reproduced with Rust
as well), but the following C program is an easy way to reproduce it:

void llvm_bug() {
        unsigned long long x = 2;
        unsigned long long y = 2;
        unsigned long long result = x >> y;
}

It builds fine under an m68k GCC cross-compiler, but under Clang, throws the
following error: Cannot select: 0x7fc3c1017300: i32,i32 = srl_parts
0x7fc3c10171c8, 0x7fc3c1017160, 0x7fc3c1017090.

This is the output when building the above program (saved as shift.c) with
`bin/clang -target m68k-unknown-linux-gnu shift.c -nostdlib`:
fatal error: error in backend: Cannot select: 0x7f9644092b00: i32,i32 =
srl_parts 0x7f96440929c8, 0x7f9644092960, 0x7f9644092890
  0x7f96440929c8: i32,ch = load<(dereferenceable load (s32) from %ir.1 + 4,
basealign 8)> 0x7f96440927c0, 0x7f96440926f0, undef:i32
    0x7f96440926f0: i32 = or FrameIndex:i32<0>, Constant:i32<4>
      0x7f9644091e68: i32 = FrameIndex<0>
      0x7f96440924e8: i32 = Constant<4>
    0x7f9644091f38: i32 = undef
  0x7f9644092960: i32,ch = load<(dereferenceable load (s32) from %ir.1, align
8)> 0x7f96440927c0, FrameIndex:i32<0>, undef:i32
    0x7f9644091e68: i32 = FrameIndex<0>
    0x7f9644091f38: i32 = undef
  0x7f9644092890: i32,ch = load<(dereferenceable load (s32) from %ir.2 + 4,
basealign 8)> 0x7f96440927c0, 0x7f96440928f8, undef:i32
    0x7f96440928f8: i32 = or FrameIndex:i32<1>, Constant:i32<4>
      0x7f9644092008: i32 = FrameIndex<1>
      0x7f96440924e8: i32 = Constant<4>
    0x7f9644091f38: i32 = undef
In function: llvm_bug
clang-14: error: clang frontend command failed with exit code 70 (use -v to see
invocation)
clang version 14.0.0 (https://github.com/llvm/llvm-project.git
9697f93587f46300814f1c6c68af347441d6e05d)
Target: m68k-unknown-linux-gnu
Thread model: posix
InstalledDir: /Users/annika/llvm-project/build/bin
clang-14: note: diagnostic msg:
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-14: note: diagnostic msg:
/var/folders/cn/qwypwgqn3vn7wwn5ksn9lr5w0000gn/T/shift-5ddeee.c
clang-14: note: diagnostic msg:
/var/folders/cn/qwypwgqn3vn7wwn5ksn9lr5w0000gn/T/shift-5ddeee.sh
clang-14: note: diagnostic msg: Crash backtrace is located in
clang-14: note: diagnostic msg:
/Users/annika/Library/Logs/DiagnosticReports/clang-14_<YYYY-MM-DD-HHMMSS>_<hostname>.crash
clang-14: note: diagnostic msg: (choose the .crash file that corresponds to
your crash)
clang-14: note: diagnostic msg:

********************

For some reason, clang didn't generate the `.crash` file it was talking about,
but compiling to LLVM-IR and then using llc made the proper diagnostic report,
which I have attached.

I understand that m68k support is experimental, but I would still like to
report this bug in hopes that it will either eventually be fixed, or someone
can help me to fix it myself.

Thanks!

-- 
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/20211009/6585dfc8/attachment.html>


More information about the llvm-bugs mailing list