llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
27.66k stars 11.38k forks source link

strstr is cut in conditional blocks (with -O1 option) #25075

Open llvmbot opened 8 years ago

llvmbot commented 8 years ago
Bugzilla Link 24701
Version trunk
OS Linux
Attachments sample which we need to compile
Reporter LLVM Bugzilla Contributor
CC @DougGregor

Extended Description

try to compile sample (in attachment) with follow options: clang++ main.cpp -o main.bc -O1 -D__extern_always_inline=inline -S -emit-llvm

And file "main.bc" doesn't contain any condition and logic: .... define i32 @​main(i32 %argc, i8** nocapture readnone %argv) #​0 { ret i32 0 } ...

In attachment you could find: sample main.cpp result of preprocessing (-E compile option) main.i llvm asm (-S -emit-llvm) main.bc

llvmbot commented 8 years ago

asm("strstr") let @​strstr emitted. (not reproducible for targeting x86_64-linux) __builtin_strstr() emits "call @​strstr".

-ipsccp optimizes out to undef. Apparently infinite recursion.

llvmbot commented 8 years ago

clang++ -v ...

clang version 3.8.0 Target: armv7l-tizen-linux-gnueabi Thread model: posix InstalledDir: /usr/bin Found candidate GCC installation: /usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9 Found candidate GCC installation: /usr/lib/gcc/armv7l-tizen-linux-gnueabi/4.9 Selected GCC installation: /usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9 Candidate multilib: .;@m32 Selected multilib: .;@m32 "/emul/ia32-linux/usr/bin/clang-3.8" -cc1 -triple armv7-tizen-linux-gnueabi -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name main.cpp -mrelocation-model static -mthread-model posix -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -fuse-init-array -target-cpu cortex-a8 -target-feature +soft-float-abi -target-abi aapcs-linux -mfloat-abi soft -v -dwarf-column-info -resource-dir /emul/ia32-linux/usr/bin/../lib/clang/3.8.0 -D __extern_always_inline=inline -internal-isystem /usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9/../../../../include/c++/4.9 -internal-isystem /usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9/../../../../include/c++/4.9/armv7l-tizen-linux-gnueabi -internal-isystem /usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9/../../../../include/c++/4.9/backward -internal-isystem /usr/local/include -internal-isystem /emul/ia32-linux/usr/bin/../lib/clang/3.8.0/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O0 -fdeprecated-macro -fdebug-compilation-dir /tmp -ferror-limit 19 -fmessage-length 86 -mstackrealign -fno-signed-char -fobjc-runtime=gcc -fcxx-exceptions -fexceptions -fdiagnostics-show-option -o /tmp/main-618f19.o -x c++ main.cpp clang -cc1 version 3.8.0 based upon LLVM 3.8.0svn default target armv7l-tizen-linux-gnueabi ignoring nonexistent directory "/include"

include "..." search starts here:

include <...> search starts here:

/usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9/../../../../include/c++/4.9 /usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9/../../../../include/c++/4.9/armv7l-tizen-linux-gnueabi /usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9/../../../../include/c++/4.9/backward /usr/local/include /emul/ia32-linux/usr/bin/../lib/clang/3.8.0/include /usr/include End of search list. "/usr/bin/ld" -X --eh-frame-hdr -m armelf_linux_eabi -dynamic-linker /lib/ld-linux.so.3 -o main /usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9/../../../../lib/crt1.o /usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9/../../../../lib/crti.o /usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9/crtbegin.o -L/usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9 -L/usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9/../../../../lib -L/emul/ia32-linux/usr/bin/../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9/../../.. -L/emul/ia32-linux/usr/bin/../lib -L/lib -L/usr/lib /tmp/main-618f19.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9/crtend.o /usr/bin/../lib/gcc/armv7l-tizen-linux-gnueabi/4.9/../../../../lib/crtn.o