New issue
Advanced search Search tips

Issue 765748 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Sep 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 1
Type: Bug

Blocking:
issue 765852



Sign in to add a comment

ClangToT asserts "getVRegDef assumes a single definition or no definition"

Project Member Reported by h...@chromium.org, Sep 15 2017

Issue description

From https://build.chromium.org/p/chromium.fyi/builders/ClangToTLinux/builds/9092

FAILED: obj/third_party/angle/src/tests/angle_end2end_tests/VertexAttributeTest.o 
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD -MF obj/third_party/angle/src/tests/angle_end2end_tests/VertexAttributeTest.o.d -DV8_DEPRECATION_WARNINGS -DUSE_UDEV -DUSE_AURA=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -DCHROMIUM_BUILD -DFIELDTRIAL_TESTING_ENABLED -DCR_CLANG_REVISION=\"313352\" -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DCOMPONENT_BUILD -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DGL_GLEXT_PROTOTYPES -DEGL_EGLEXT_PROTOTYPES -DANGLE_X64_CPU -DANGLE_ENABLE_OPENGL -DANGLE_USE_X11 -DANGLE_ENABLE_VULKAN -DANGLE_ENABLE_NULL -DLIBANGLE_IMPLEMENTATION -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26 -DGTEST_API_= -DGTEST_HAS_POSIX_RE=0 -DGTEST_LANG_CXX11=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -DUCHAR_TYPE=uint16_t -DUNIT_TEST -I../../third_party/angle/src/tests/testing/gtest/include -I../../third_party/angle/src/tests -I../../third_party/angle/util -I../.. -Igen -I../../third_party/angle/include -I../../third_party/angle/src -I../../build/linux/debian_jessie_amd64-sysroot/usr/include/glib-2.0 -I../../build/linux/debian_jessie_amd64-sysroot/usr/lib/x86_64-linux-gnu/glib-2.0/include -I../../third_party/googletest/src/googletest/include -I../../third_party/ced/src -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -I../../third_party/googletest/custom -I../../third_party/googletest/src/googlemock/include -I../../third_party/angle/include -I../../third_party/angle/src -I../../third_party/angle/src/common/third_party/base -Igen/angle -I../../third_party/angle/util -I../../third_party/angle/include -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -funwind-tables -fPIC -pipe -B../../third_party/binutils/Linux_x64/Release/bin -pthread -fcolor-diagnostics -m64 -march=x86-64 -Wall -Werror -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-unneeded-internal-declaration -Wno-inconsistent-missing-override -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-address-of-packed-member -Wno-unused-lambda-capture -Wno-user-defined-warnings -Wno-enum-compare-switch -Wno-tautological-unsigned-zero-compare -O2 -fno-ident -fdata-sections -ffunction-sections -fomit-frame-pointer -g2 -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -std=gnu++14 -fno-rtti -nostdinc++ -isystem../../buildtools/third_party/libc++/trunk/include -isystem../../buildtools/third_party/libc++abi/trunk/include --sysroot=../../build/linux/debian_jessie_amd64-sysroot -fno-exceptions -fvisibility-inlines-hidden -c ../../third_party/angle/src/tests/gl_tests/VertexAttributeTest.cpp -o obj/third_party/angle/src/tests/angle_end2end_tests/VertexAttributeTest.o
clang-6.0: /b/c/builder/ClangToTLinux/src/third_party/llvm/lib/CodeGen/MachineRegisterInfo.cpp:366: llvm::MachineInstr* llvm::MachineRegisterInfo::getVRegDef(unsigned int) const: Assertion `(I.atEnd() || std::next(I) == def_instr_end()) && "getVRegDef assumes a single definition or no definition"' failed.
#0 0x00000000020da83a llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x20da83a)
#1 0x00000000020d891e llvm::sys::RunSignalHandlers() (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x20d891e)
#2 0x00000000020d8a82 (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x20d8a82)
#3 0x00007f4e998aa330 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x10330)
#4 0x00007f4e9849ac37 gsignal /build/eglibc-SvCtMH/eglibc-2.19/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:56:0
#5 0x00007f4e9849e028 abort /build/eglibc-SvCtMH/eglibc-2.19/stdlib/abort.c:91:0
#6 0x00007f4e98493bf6 __assert_fail_base /build/eglibc-SvCtMH/eglibc-2.19/assert/assert.c:92:0
#7 0x00007f4e98493ca2 (/lib/x86_64-linux-gnu/libc.so.6+0x2fca2)
#8 0x00000000019e9cd1 llvm::MachineRegisterInfo::getVRegDef(unsigned int) const (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x19e9cd1)
#9 0x000000000165eaaf (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x165eaaf)
#10 0x0000000001662569 (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x1662569)
#11 0x00000000016629b7 (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x16629b7)
#12 0x0000000001662c58 (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x1662c58)
#13 0x0000000001663dcc (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x1663dcc)
#14 0x0000000001663dbf (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x1663dbf)
#15 0x0000000001663dbf (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x1663dbf)
#16 0x0000000001663dbf (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x1663dbf)
#17 0x0000000001663dbf (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x1663dbf)
#18 0x0000000001663dbf (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x1663dbf)
#19 0x0000000001663dbf (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x1663dbf)
#20 0x00000000016649ec (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x16649ec)
#21 0x0000000001990205 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x1990205)
#22 0x0000000001c8c773 llvm::FPPassManager::runOnFunction(llvm::Function&) (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x1c8c773)
#23 0x0000000001c8c81c llvm::FPPassManager::runOnModule(llvm::Module&) (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x1c8c81c)
#24 0x0000000001c8d09f llvm::legacy::PassManagerImpl::run(llvm::Module&) (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x1c8d09f)
#25 0x00000000022622f8 (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x22622f8)
#26 0x0000000002263592 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::DataLayout const&, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x2263592)
#27 0x0000000002941c6b (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x2941c6b)
#28 0x0000000002d40cf2 clang::ParseAST(clang::Sema&, bool, bool) (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x2d40cf2)
#29 0x000000000294130f clang::CodeGenAction::ExecuteAction() (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x294130f)
#30 0x00000000025f88b6 clang::FrontendAction::Execute() (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x25f88b6)
#31 0x00000000025d010e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x25d010e)
#32 0x0000000002688fbb clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0x2688fbb)
#33 0x0000000000bbe678 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0xbbe678)
#34 0x0000000000b55c5e main (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0xb55c5e)
#35 0x00007f4e98485f45 __libc_start_main /build/eglibc-SvCtMH/eglibc-2.19/csu/libc-start.c:321:0
#36 0x0000000000bb9d79 _start (/b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0+0xbb9d79)
Stack dump:
0.	Program arguments: /b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/bin/clang-6.0 -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -disable-free -main-file-name VertexAttributeTest.cpp -mrelocation-model pic -pic-level 2 -mthread-model posix -relaxed-aliasing -fmath-errno -masm-verbose -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu x86-64 -dwarf-column-info -debug-info-kind=limited -dwarf-version=4 -debugger-tuning=gdb -momit-leaf-frame-pointer -ffunction-sections -fdata-sections -coverage-notes-file /b/c/builder/ClangToTLinux/src/out/Release/obj/third_party/angle/src/tests/angle_end2end_tests/VertexAttributeTest.gcno -nostdinc++ -resource-dir /b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/lib/clang/6.0.0 -dependency-file obj/third_party/angle/src/tests/angle_end2end_tests/VertexAttributeTest.o.d -MT obj/third_party/angle/src/tests/angle_end2end_tests/VertexAttributeTest.o -isystem ../../buildtools/third_party/libc++/trunk/include -isystem ../../buildtools/third_party/libc++abi/trunk/include -D V8_DEPRECATION_WARNINGS -D USE_UDEV -D USE_AURA=1 -D USE_PANGO=1 -D USE_CAIRO=1 -D USE_GLIB=1 -D USE_NSS_CERTS=1 -D USE_X11=1 -D FULL_SAFE_BROWSING -D SAFE_BROWSING_CSD -D SAFE_BROWSING_DB_LOCAL -D CHROMIUM_BUILD -D FIELDTRIAL_TESTING_ENABLED -D CR_CLANG_REVISION="313352" -D _FILE_OFFSET_BITS=64 -D _LARGEFILE_SOURCE -D _LARGEFILE64_SOURCE -D __STDC_CONSTANT_MACROS -D __STDC_FORMAT_MACROS -D COMPONENT_BUILD -D NDEBUG -D NVALGRIND -D DYNAMIC_ANNOTATIONS_ENABLED=0 -D GL_GLEXT_PROTOTYPES -D EGL_EGLEXT_PROTOTYPES -D ANGLE_X64_CPU -D ANGLE_ENABLE_OPENGL -D ANGLE_USE_X11 -D ANGLE_ENABLE_VULKAN -D ANGLE_ENABLE_NULL -D LIBANGLE_IMPLEMENTATION -D GLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_32 -D GLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_26 -D GTEST_API_= -D GTEST_HAS_POSIX_RE=0 -D GTEST_LANG_CXX11=1 -D U_USING_ICU_NAMESPACE=0 -D U_ENABLE_DYLOAD=0 -D ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -D UCHAR_TYPE=uint16_t -D UNIT_TEST -I ../../third_party/angle/src/tests/testing/gtest/include -I ../../third_party/angle/src/tests -I ../../third_party/angle/util -I ../.. -I gen -I ../../third_party/angle/include -I ../../third_party/angle/src -I ../../build/linux/debian_jessie_amd64-sysroot/usr/include/glib-2.0 -I ../../build/linux/debian_jessie_amd64-sysroot/usr/lib/x86_64-linux-gnu/glib-2.0/include -I ../../third_party/googletest/src/googletest/include -I ../../third_party/ced/src -I ../../third_party/icu/source/common -I ../../third_party/icu/source/i18n -I ../../third_party/googletest/custom -I ../../third_party/googletest/src/googlemock/include -I ../../third_party/angle/include -I ../../third_party/angle/src -I ../../third_party/angle/src/common/third_party/base -I gen/angle -I ../../third_party/angle/util -I ../../third_party/angle/include -D __DATE__= -D __TIME__= -D __TIMESTAMP__= -isysroot ../../build/linux/debian_jessie_amd64-sysroot -internal-isystem ../../build/linux/debian_jessie_amd64-sysroot/usr/local/include -internal-isystem /b/c/builder/ClangToTLinux/src/third_party/llvm-build/Release+Asserts/lib/clang/6.0.0/include -internal-externc-isystem ../../build/linux/debian_jessie_amd64-sysroot/usr/include/x86_64-linux-gnu -internal-externc-isystem ../../build/linux/debian_jessie_amd64-sysroot/include -internal-externc-isystem ../../build/linux/debian_jessie_amd64-sysroot/usr/include -O2 -Wno-builtin-macro-redefined -Wall -Werror -Wextra -Wno-missing-field-initializers -Wno-unused-parameter -Wno-c++11-narrowing -Wno-covered-switch-default -Wno-unneeded-internal-declaration -Wno-inconsistent-missing-override -Wno-undefined-var-template -Wno-nonportable-include-path -Wno-address-of-packed-member -Wno-unused-lambda-capture -Wno-user-defined-warnings -Wno-enum-compare-switch -Wno-tautological-unsigned-zero-compare -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -std=gnu++14 -fdeprecated-macro -fdebug-compilation-dir /b/c/builder/ClangToTLinux/src/out/Release -ferror-limit 19 -fmessage-length 0 -fvisibility hidden -fvisibility-inlines-hidden -pthread -stack-protector 1 -stack-protector-buffer-size 4 -fno-rtti -fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops -vectorize-slp -o obj/third_party/angle/src/tests/angle_end2end_tests/VertexAttributeTest.o -x c++ ../../third_party/angle/src/tests/gl_tests/VertexAttributeTest.cpp 
1.	<eof> parser at end of file
2.	Code generation
3.	Running pass 'Function Pass Manager' on module '../../third_party/angle/src/tests/gl_tests/VertexAttributeTest.cpp'.
4.	Running pass 'X86 LEA Optimize' on function '@_ZN12_GLOBAL__N_154VertexAttributeTestES31_DrawArraysWithLargeStride_Test8TestBodyEv'
clang-6.0: error: unable to execute command: Aborted (core dumped)
clang-6.0: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 6.0.0 (trunk 313352)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /b/c/builder/ClangToTLinux/src/out/Release/../../third_party/llvm-build/Release+Asserts/bin
clang-6.0: note: diagnostic msg: PLEASE submit a bug report to http://llvm.org/bugs/ and include the crash backtrace, preprocessed source, and associated run script.
clang-6.0: note: diagnostic msg: 
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-6.0: note: diagnostic msg: /b/rr/tmp1Jg17m/t/VertexAttributeTest-0ad698.cpp
clang-6.0: note: diagnostic msg: /b/rr/tmp1Jg17m/t/VertexAttributeTest-0ad698.sh
clang-6.0: note: diagnostic msg: 
********************
 

Comment 1 by h...@chromium.org, Sep 15 2017

Attaching repro.
VertexAttributeTest-85685f.sh
10.8 KB View Download
VertexAttributeTest-85685f.cpp
8.0 MB View Download

Comment 2 by h...@chromium.org, Sep 15 2017

Clang range: r313341 -- r313352.

Suspects:

------------------------------------------------------------------------
r313349 | jonpa | 2017-09-15 00:47:38 -0700 (Fri, 15 Sep 2017) | 9 lines

Recommit "[RegAlloc] Make sure live-ranges reflect the state of the IR when
         removing them"

This was temporarily reverted, but now that the fix has been commited (r313197)
it should be put back in place.

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

This reverts commit 9ef93d9dc4c51568e858cf8203cd2c5ce8dca796.
------------------------------------------------------------------------

------------------------------------------------------------------------
r313343 | jbhateja | 2017-09-14 22:29:51 -0700 (Thu, 14 Sep 2017) | 33 lines

[X86] PR32755 : Improvement in CodeGen instruction selection for LEAs.

Summary:
   1/  Operand folding during complex pattern matching for LEAs has been
       extended, such that it promotes Scale to accommodate similar operand
       appearing in the DAG.
       e.g.
          T1 = A + B
          T2 = T1 + 10
          T3 = T2 + A
       For above DAG rooted at T3, X86AddressMode will no look like
          Base = B , Index = A , Scale = 2 , Disp = 10

   2/  During OptimizeLEAPass down the pipeline factorization is now performed over LEAs
       so that if there is an opportunity then complex LEAs (having 3 operands)
       could be factored out.
       e.g.
          leal 1(%rax,%rcx,1), %rdx
          leal 1(%rax,%rcx,2), %rcx
       will be factored as following
          leal 1(%rax,%rcx,1), %rdx
          leal (%rdx,%rcx)   , %edx

   3/ Aggressive operand folding for AM based selection for LEAs is sensitive to loops,
      thus avoiding creation of any complex LEAs within a loop.

Reviewers: lsaba, RKSimon, craig.topper, qcolombet

Reviewed By: lsaba

Subscribers: spatel, igorb, llvm-commits

Differential Revision: https://reviews.llvm.org/D35014
------------------------------------------------------------------------

Comment 3 by h...@chromium.org, Sep 15 2017

r313343 is the one.

Comment 4 by h...@chromium.org, Sep 15 2017

Oh, and someone already reported the problem on the commit thread.

Comment 5 by h...@chromium.org, Sep 15 2017

Status: Fixed (was: Started)
Files upstream: https://bugs.llvm.org/show_bug.cgi?id=34629

Reverted in r313376

Comment 6 by h...@chromium.org, Sep 20 2017

Blocking: 765852

Sign in to add a comment