[llvm-bugs] [Bug 36743] New: Cannot select: X86ISD::CALL ICE with -mx32 -O2 -fno-plt

via llvm-bugs llvm-bugs at lists.llvm.org
Wed Mar 14 11:58:28 PDT 2018


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

            Bug ID: 36743
           Summary: Cannot select: X86ISD::CALL ICE with -mx32 -O2
                    -fno-plt
           Product: new-bugs
           Version: 6.0
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: steven at uplinklabs.net
                CC: llvm-bugs at lists.llvm.org

A straightforward reduced test case:

==> /tmp/testcase-cc8b84.c <==
# 1 "<built-in>"
# 1 "testcase.c"
main() { a(); }

==> /tmp/testcase-cc8b84.sh <==
# Crash reproducer for clang version 6.0.0 (tags/RELEASE_600/final)
# Driver args: "-v" "-O2" "-fno-plt" "-mx32" "-c" "testcase.c"
# Original command:  "/usr/bin/clang-6.0" "-cc1" "-triple"
"x86_64-pc-linux-gnux32" "-emit-obj" "-disable-free" "-disable-llvm-verifier"
"-discard-value-names" "-main-file-name" "testcase.c" "-mrelocation-model"
"pic" "-pic-level" "2" "-pic-is-pie" "-mthread-model" "posix" "-fmath-errno"
"-masm-verbose" "-mconstructor-aliases" "-fno-plt" "-munwind-tables"
"-fuse-init-array" "-target-cpu" "x86-64" "-dwarf-column-info"
"-debugger-tuning=gdb" "-momit-leaf-frame-pointer" "-v" "-coverage-notes-file"
"/home/steven/Development/ec2-packages/libc++/testcase.gcno" "-resource-dir"
"/usr/lib/clang/6.0.0" "-internal-isystem" "/usr/local/include"
"-internal-isystem" "/usr/lib/clang/6.0.0/include" "-internal-externc-isystem"
"/include" "-internal-externc-isystem" "/usr/include" "-O2"
"-fdebug-compilation-dir" "/home/steven/Development/ec2-packages/libc++"
"-ferror-limit" "19" "-fmessage-length" "190" "-stack-protector" "2"
"-fobjc-runtime=gcc" "-fdiagnostics-show-option" "-fcolor-diagnostics"
"-vectorize-loops" "-vectorize-slp" "-o" "testcase.o" "-x" "c" "testcase.c"
 "/usr/bin/clang-6.0" "-cc1" "-triple" "x86_64-pc-linux-gnux32" "-emit-obj"
"-disable-free" "-disable-llvm-verifier" "-discard-value-names"
"-main-file-name" "testcase.c" "-mrelocation-model" "pic" "-pic-level" "2"
"-pic-is-pie" "-mthread-model" "posix" "-fmath-errno" "-masm-verbose"
"-mconstructor-aliases" "-fno-plt" "-munwind-tables" "-fuse-init-array"
"-target-cpu" "x86-64" "-dwarf-column-info" "-debugger-tuning=gdb"
"-momit-leaf-frame-pointer" "-v" "-coverage-notes-file"
"/home/steven/Development/ec2-packages/libc++/testcase.gcno" "-O2"
"-ferror-limit" "19" "-fmessage-length" "190" "-stack-protector" "2"
"-fobjc-runtime=gcc" "-fdiagnostics-show-option" "-fcolor-diagnostics"
"-vectorize-loops" "-vectorize-slp" "-x" "c" "testcase-cc8b84.c"


Attempting to compile with clang 6.0 with "-fno-plt -mx32" at any optimization
level higher than -O0 will break at isel. This problem exists in both 6.0 and
trunk:

$ /usr/bin/clang -v -O2 -fno-plt -mx32 -c testcase.c 
clang version 6.0.0 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnux32
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-linux-gnu/5.5.0
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-linux-gnu/6.4.1
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-pc-linux-gnu/7.3.1
Found candidate GCC installation:
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/5.5.0
Found candidate GCC installation:
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/6.4.1
Found candidate GCC installation:
/usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/5.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/6.4.1
Found candidate GCC installation: /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.1
Found candidate GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/5.5.0
Found candidate GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/6.4.1
Found candidate GCC installation: /usr/lib64/gcc/x86_64-pc-linux-gnu/7.3.1
Selected GCC installation: /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/7.3.1
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: x32;@mx32
Found CUDA installation: /opt/cuda, version 9.1
 "/usr/bin/clang-6.0" -cc1 -triple x86_64-pc-linux-gnux32 -emit-obj
-disable-free -disable-llvm-verifier -discard-value-names -main-file-name
testcase.c -mrelocation-model pic -pic-level 2 -pic-is-pie -mthread-model posix
-fmath-errno -masm-verbose -mconstructor-aliases -fno-plt -munwind-tables
-fuse-init-array -target-cpu x86-64 -dwarf-column-info -debugger-tuning=gdb
-momit-leaf-frame-pointer -v -coverage-notes-file
/home/steven/Development/ec2-packages/libc++/testcase.gcno -resource-dir
/usr/lib/clang/6.0.0 -internal-isystem /usr/local/include -internal-isystem
/usr/lib/clang/6.0.0/include -internal-externc-isystem /include
-internal-externc-isystem /usr/include -O2 -fdebug-compilation-dir
/home/steven/Development/ec2-packages/libc++ -ferror-limit 19 -fmessage-length
190 -stack-protector 2 -fobjc-runtime=gcc -fdiagnostics-show-option
-fcolor-diagnostics -vectorize-loops -vectorize-slp -o testcase.o -x c
testcase.c
clang -cc1 version 6.0.0 based upon LLVM 6.0.0 default target
x86_64-pc-linux-gnu
ignoring nonexistent directory "/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/lib/clang/6.0.0/include
 /usr/include
End of search list.
testcase.c:1:1: warning: type specifier missing, defaults to 'int'
[-Wimplicit-int]
main() { a(); }
^
testcase.c:1:10: warning: implicit declaration of function 'a' is invalid in
C99 [-Wimplicit-function-declaration]
main() { a(); }
         ^
fatal error: error in backend: Cannot select: 0x2e382f8: ch,glue = X86ISD::CALL
0x2e38088, 0x2e38228, Register:i8 %al, RegisterMask:Untyped, 0x2e38088:1
  0x2e38228: i32,ch = load<LD4[GOT]> 0x2d819b0, 0x2e38158, undef:i32
    0x2e38158: i32 = X86ISD::WrapperRIP TargetGlobalAddress:i32<i32 (...)* @a>
0 [TF=5]
      0x2e380f0: i32 = TargetGlobalAddress<i32 (...)* @a> 0 [TF=5]
    0x2e381c0: i32 = undef
  0x2e38020: i8 = Register %al
  0x2e38290: Untyped = RegisterMask
  0x2e38088: ch,glue = CopyToReg 0x2e37f50, Register:i8 %al, Constant:i8<0>
    0x2e38020: i8 = Register %al
    0x2e37fb8: i8 = Constant<0>
In function: main
clang-6.0: error: clang frontend command failed with exit code 70 (use -v to
see invocation)
clang version 6.0.0 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnux32
Thread model: posix
InstalledDir: /usr/bin

-- 
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/20180314/38e9d509/attachment.html>


More information about the llvm-bugs mailing list