[polly] r360454 - [ZoneAlgo] Fix PHI inconsistency in invalid contexts.

Michael Kruse via llvm-commits llvm-commits at lists.llvm.org
Tue May 21 12:17:31 PDT 2019


Should be fixed in r361290. Thank you for your reproducer.

Your reproducers are amazingly clean. Do you use an improved version
of bugpoint?

Michael

Am Di., 21. Mai 2019 um 13:33 Uhr schrieb Eli Friedman <efriedma at quicinc.com>:
>
> Attached reproducer; crashes with "opt -polly-delicm -polly-process-unprofitable".
>
> -Eli
>
> > -----Original Message-----
> > From: Michael Kruse <llvm at meinersbur.de>
> > Sent: Tuesday, May 21, 2019 9:02 AM
> > To: Michael Kruse <llvm at meinersbur.de>
> > Cc: Eli Friedman <efriedma at quicinc.com>; llvm-commits <llvm-
> > commits at lists.llvm.org>
> > Subject: [EXT] Re: [polly] r360454 - [ZoneAlgo] Fix PHI inconsistency in invalid
> > contexts.
> >
> > Hi,
> >
> > the buildbot still seems to fail at another problem. Excerpt from the
> > log below. The error is typical for when the result of an operation is
> > empty, so instead of calling isl_map_from_union_map, polly::singleton
> > should be used. I cannot find where in collapseScalarsToStore it is
> > used, probably in something that is inlined. Can you send me a
> > reproducer?
> >
> > Michael
> >
> >
> > FAILED:
> > out/target/product/angler/obj_arm/SHARED_LIBRARIES/libopus_intermediates/
> > silk/fixed/burg_modified_FIX.o
> > /bin/bash -c "PWD=/proc/self/cwd ulimit -t 240;
> > llvm.inst/bin/clang -I external/libopus/include -I
> > external/libopus/src -I external/libopus/silk -I external/libopus/celt
> > -I external/libopus/silk/fixed -I external/libogg/include -I
> > external/libopus -I
> > out/target/product/angler/obj_arm/SHARED_LIBRARIES/libopus_intermediates
> > -I out/target/product/angler/gen/SHARED_LIBRARIES/libopus_intermediates
> > -I libnativehelper/include/nativehelper \$(cat
> > out/target/product/angler/obj_arm/SHARED_LIBRARIES/libopus_intermediates/
> > import_includes)
> >  -I system/core/include -I system/media/audio/include -I
> > hardware/libhardware/include -I hardware/libhardware_legacy/include -I
> > hardware/ril/include -I libnativehelper/include -I
> > frameworks/native/include -I frameworks/native/opengl/include -isystem
> > frameworks/av/include -isystem out/target/product/angler/obj/include
> > -isystem device/huawei/angler/kernel-headers -isystem
> > hardware/qcom/msm8994/kernel-headers -isystem
> > bionic/libc/arch-arm/include -isystem bionic/libc/include -isystem
> > bionic/libc/kernel/uapi -isystem bionic/libc/kernel/uapi/asm-arm
> > -isystem bionic/libc/kernel/android/uapi -c  -fno-exceptions
> > -Wno-multichar -ffunction-sections -fdata-sections -funwind-tables
> > -fstack-protector-strong -Wa,--noexecstack -Werror=format-security
> > -D_FORTIFY_SOURCE=2 -fno-short-enums -no-canonical-prefixes -DNDEBUG
> > -g -Wstrict-aliasing=2 -DANDROID -fmessage-length=0 -W -Wall
> > -Wno-unused -Winit-self -Wpointer-arith -DNDEBUG -UDEBUG
> > -fdebug-prefix-map=/proc/self/cwd=
> > -D__compiler_offsetof=__builtin_offsetof -Werror=int-conversion
> > -Wno-reserved-id-macro -Wno-format-pedantic
> > -Wno-unused-command-line-argument -fcolor-diagnostics
> > -Wno-expansion-to-defined -Werror=return-type -Werror=non-virtual-dtor
> > -Werror=address -Werror=sequence-point -Werror=date-time -nostdlibinc
> > -msoft-float -mfloat-abi=softfp -mfpu=neon -mcpu=cortex-a7
> > -D__ARM_FEATURE_LPAE=1 -target arm-linux-androideabi
> > -Bprebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/arm-linux-
> > androideabi/bin
> >   -std=gnu99 -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing
> > -DNULL=0 -DSOCKLEN_T=socklen_t -DLOCALE_NOT_USED -
> > D_LARGEFILE_SOURCE=1
> > -D_FILE_OFFSET_BITS=64 -Drestrict='' -D__EMX__ -DOPUS_BUILD
> > -DFIXED_POINT -DUSE_ALLOCA -DHAVE_LRINT -DHAVE_LRINTF -O2
> > -fno-math-errno -fPIC -DOPUS_ARM_ASM -DOPUS_ARM_INLINE_ASM
> > -DOPUS_ARM_MAY_HAVE_EDSP -DOPUS_ARM_INLINE_EDSP
> > -DOPUS_ARM_MAY_HAVE_MEDIA -DOPUS_ARM_INLINE_MEDIA -
> > DOPUS_HAVE_RTCD
> > -DOPUS_ARM_MAY_HAVE_NEON -DOPUS_ARM_MAY_HAVE_NEON_INTR
> > -DOPUS_ARM_PRESUME_NEON -DOPUS_ARM_INLINE_NEON -
> > D_USING_LIBCXX
> > -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast
> > -Werror=address-of-temporary -Werror=return-type -Wno-error -O3 -mllvm
> > -polly -mllvm -polly-position=before-vectorizer -mllvm
> > -polly-process-unprofitable -MD -MF
> > out/target/product/angler/obj_arm/SHARED_LIBRARIES/libopus_intermediates/
> > silk/fixed/burg_modified_FIX.d
> > -o
> > out/target/product/angler/obj_arm/SHARED_LIBRARIES/libopus_intermediates/
> > silk/fixed/burg_modified_FIX.o
> > external/libopus/silk/fixed/burg_modified_FIX.c"
> > /var/lib/buildbot/slaves/hexagon-build-
> > 03/aosp/llvm.src/tools/polly/lib/External/isl/isl_union_map.c:622:
> > union map needs to contain elements in exactly one space
> > Stack dump:
> > 0. Program arguments: llvm.inst/bin/clang -cc1 -triple
> > thumbv7-unknown-linux-android -emit-obj -mnoexecstack -disable-free
> > -main-file-name burg_modified_FIX.c -mrelocation-model pic -pic-level
> > 2 -mthread-model posix -relaxed-aliasing -masm-verbose
> > -mconstructor-aliases -munwind-tables -fuse-init-array -target-cpu
> > cortex-a7 -target-feature +soft-float-abi -target-feature -crc
> > -target-feature +dsp -target-feature -fp16fml -target-feature -ras
> > -target-feature -dotprod -target-feature +hwdiv-arm -target-feature
> > +hwdiv -target-feature -fp-only-sp -target-feature -d16
> > -target-feature +vfp3 -target-feature -fp16 -target-feature -vfp4
> > -target-feature -fp-armv8 -target-feature +neon -target-feature
> > -crypto -target-abi aapcs-linux -mfloat-abi soft
> > -fallow-half-arguments-and-returns -dwarf-column-info
> > -debug-info-kind=limited -dwarf-version=4 -debugger-tuning=gdb
> > -ffunction-sections -fdata-sections -coverage-notes-file
> > /var/lib/buildbot/slaves/hexagon-build-
> > 03/aosp/out/target/product/angler/obj_arm/SHARED_LIBRARIES/libopus_inter
> > mediates/silk/fixed/burg_modified_FIX.gcno
> > -nostdsysteminc -resource-dir llvm.inst/lib/clang/9.0.0
> > -dependency-file
> > out/target/product/angler/obj_arm/SHARED_LIBRARIES/libopus_intermediates/
> > silk/fixed/burg_modified_FIX.d
> > -MT
> > out/target/product/angler/obj_arm/SHARED_LIBRARIES/libopus_intermediates/
> > silk/fixed/burg_modified_FIX.o
> > -sys-header-deps -isystem frameworks/av/include -isystem
> > out/target/product/angler/obj/include -isystem
> > device/huawei/angler/kernel-headers -isystem
> > hardware/qcom/msm8994/kernel-headers -isystem
> > bionic/libc/arch-arm/include -isystem bionic/libc/include -isystem
> > bionic/libc/kernel/uapi -isystem bionic/libc/kernel/uapi/asm-arm
> > -isystem bionic/libc/kernel/android/uapi -I external/libopus/include
> > -I external/libopus/src -I external/libopus/silk -I
> > external/libopus/celt -I external/libopus/silk/fixed -I
> > external/libogg/include -I external/libopus -I
> > out/target/product/angler/obj_arm/SHARED_LIBRARIES/libopus_intermediates
> > -I out/target/product/angler/gen/SHARED_LIBRARIES/libopus_intermediates
> > -I libnativehelper/include/nativehelper -I external/libcxx/include -I
> > external/libcxxabi/i</span><span class="stdout">nclude -I
> > system/core/include -I system/media/audio/include -I
> > hardware/libhardware/include -I hardware/libhardware_legacy/include -I
> > hardware/ril/include -I libnativehelper/include -I
> > frameworks/native/include -I frameworks/native/opengl/include -D
> > _FORTIFY_SOURCE=2 -D NDEBUG -D ANDROID -D NDEBUG -U DEBUG -D
> > __compiler_offsetof=__builtin_offsetof -D __ARM_FEATURE_LPAE=1 -D
> > NULL=0 -D SOCKLEN_T=socklen_t -D LOCALE_NOT_USED -D
> > _LARGEFILE_SOURCE=1 -D _FILE_OFFSET_BITS=64 -D restrict= -D __EMX__ -D
> > OPUS_BUILD -D FIXED_POINT -D USE_ALLOCA -D HAVE_LRINT -D HAVE_LRINTF
> > -D OPUS_ARM_ASM -D OPUS_ARM_INLINE_ASM -D
> > OPUS_ARM_MAY_HAVE_EDSP -D
> > OPUS_ARM_INLINE_EDSP -D OPUS_ARM_MAY_HAVE_MEDIA -D
> > OPUS_ARM_INLINE_MEDIA -D OPUS_HAVE_RTCD -D
> > OPUS_ARM_MAY_HAVE_NEON -D
> > OPUS_ARM_MAY_HAVE_NEON_INTR -D OPUS_ARM_PRESUME_NEON -D
> > OPUS_ARM_INLINE_NEON -D _USING_LIBCXX -internal-isystem
> > llvm.inst/lib/clang/9.0.0/include -O3 -Wno-multichar
> > -Werror=format-security -Wstrict-aliasing=2 -W -Wall -Wno-unused
> > -Winit-self -Wpointer-arith -Werror=int-conversion
> > -Wno-reserved-id-macro -Wno-format-pedantic
> > -Wno-unused-command-line-argument -Wno-expansion-to-defined
> > -Werror=return-type -Werror=non-virtual-dtor -Werror=address
> > -Werror=sequence-point -Werror=date-time -Werror=int-to-pointer-cast
> > -Werror=pointer-to-int-cast -Werror=address-of-temporary
> > -Werror=return-type -Wno-error -std=gnu99 -fdebug-compilation-dir
> > /var/lib/buildbot/slaves/hexagon-build-03/aosp
> > -fdebug-prefix-map=/proc/self/cwd= -ferror-limit 19 -fmessage-length 0
> > -stack-protector 2 -fno-signed-char -fobjc-runtime=gcc
> > -fdiagnostics-show-option -fcolor-diagnostics -vectorize-loops
> > -vectorize-slp -mllvm -polly -mllvm -polly-position=before-vectorizer
> > -mllvm -polly-process-unprofitable -o
> > out/target/product/angler/obj_arm/SHARED_LIBRARIES/libopus_intermediates/
> > silk/fixed/burg_modified_FIX.o
> > -x c external/libopus/silk/fixed/burg_modified_FIX.c
> > 1. <eof> parser at end of file
> > 2. Per-module optimization passes
> > 3. Running pass 'Function Pass Manager' on module
> > 'external/libopus/silk/fixed/burg_modified_FIX.c'.
> > 4. Running pass 'Region Pass Manager' on function
> > '@silk_burg_modified_c'
> > 5. Running pass 'Polly - DeLICM/DePRE' on basic block
> > '%for.body107'
> >  #0 0x000000000184a2e4 PrintStackTraceSignalHandler(void*)
> > (llvm.inst/bin/clang+0x184a2e4)
> >  #1 0x0000000001847e8e llvm::sys::RunSignalHandlers()
> > (llvm.inst/bin/clang+0x1847e8e)
> >  #2 0x000000000184a708 SignalHandler(int) (llvm.inst/bin/clang+0x184a708)
> >  #3 0x00007f0d4c500d10 __restore_rt
> > (/lib/x86_64-linux-gnu/libpthread.so.0+0x10d10)
> >  #4 0x00007f0d4b3ed267 raise
> > /build/buildd/glibc-2.21/signal/../sysdeps/unix/sysv/linux/raise.c:55:0
> >  #5 0x00007f0d4b3eeeca abort /build/buildd/glibc-2.21/stdlib/abort.c:91:0
> >  #6 0x0000000003ccd75c (llvm.inst/bin/clang+0x3ccd75c)
> >  #7 0x0000000003d95037 isl_map_from_union_map
> > (llvm.inst/bin/clang+0x3d95037)
> >  #8 0x0000000002147d48 (anonymous
> > namespace)::DeLICMImpl::collapseScalarsToStore(polly::MemoryAccess*)
> > (llvm.inst/bin/clang+0x2147d48)
> >  #9 0x0000000002144c08 (anonymous
> > namespace)::DeLICM::runOnScop(polly::Scop&)
> > (llvm.inst/bin/clang+0x2144c08)
> > #10 0x0000000000d98fbb
> > llvm::RGPassManager::runOnFunction(llvm::Function&)
> > (llvm.inst/bin/clang+0xd98fbb)
> > #11 0x000000000131a2fe
> > llvm::FPPassManager::runOnFunction(llvm::Function&)
> > (llvm.inst/bin/clang+0x131a2fe)
> > #12 0x000000000131a6c3
> > llvm::FPPassManager::runOnModule(llvm::Module&)
> > (llvm.inst/bin/clang+0x131a6c3)
> > #13 0x000000000131aba4
> > llvm::legacy::PassManagerImpl::run(llvm::Module&)
> > (llvm.inst/bin/clang+0x131aba4)
> > #14 0x0000000001a11a3c
> > clang::EmitBackendOutput(clang::DiagnosticsEngine&,
> > clang::HeaderSearchOptions const&, clang::CodeGenOptions
> > const&, clang::TargetOptions const&, clang::LangOptions
> > const&, llvm::DataLayout const&, llvm::Module*,
> > clang::BackendAction, std::__1::unique_ptr<llvm::raw_pwrite_stream,
> > std::__1::default_delete<llvm::raw_pwrite_stream> >)
> > (llvm.inst/bin/clang+0x1a11a3c)
> > #15 0x00000000025ab4f0
> > clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&)
> > (llvm.inst/bin/clang+0x25ab4f0)
> > #16 0x0000000002b73263 clang::ParseAST(clang::Sema&, bool, bool)
> > (llvm.inst/bin/clang+0x2b73263)
> > #17 0x0000000001f0df84 clang::FrontendAction::Execute()
> > (llvm.inst/bin/clang+0x1f0df84)
> > #18 0x0000000001eb4701
> > clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)
> > (llvm.inst/bin/clang+0x1eb4701)
> > #19 0x0000000001fab21e
> > clang::ExecuteCompilerInvocation(clang::CompilerInstance*)
> > (llvm.inst/bin/clang+0x1fab21e)
> > #20 0x00000000008e2787 cc1_main(llvm::ArrayRef<char const*>,
> > char const*, void*) (llvm.inst/bin/clang+0x8e2787)
> > #21 0x00000000008e0420 main (llvm.inst/bin/clang+0x8e0420)
> > #22 0x00007f0d4b3d8a40 __libc_start_main
> > /build/buildd/glibc-2.21/csu/libc-start.c:323:0
> > #23 0x00000000008dd5c9 _start (llvm.inst/bin/clang+0x8dd5c9)
> > clang: error: unable to execute command: Aborted (core dumped)
> > clang: error: clang frontend command failed due to signal (use -v to
> > see invocation)
> > clang version 9.0.0 (trunk 361211)
> > Target: arm-unknown-linux-android
> > Thread model: posix
> > InstalledDir: llvm.inst/bin
> > clang: note: diagnostic msg: PLEASE submit a bug report to
> > https://bugs.llvm.org/ and include the crash backtrace, preprocessed
> > source, and associated run script.
> > clang: note: diagnostic msg:
> > ********************
> >
> > PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
> > Preprocessed source(s) and associated run script(s) are located at:
> > clang: note: diagnostic msg: /tmp/burg_modified_FIX-5112db.c
> > clang: note: diagnostic msg: /tmp/burg_modified_FIX-5112db.sh
> > clang: note: diagnostic msg:
> >
> > ********************
> >
> > Am Mo., 20. Mai 2019 um 17:31 Uhr schrieb Michael Kruse
> > <llvm at meinersbur.de>:
> > >
> > > Sorry for taking so long.
> > >
> > > Looks like a bug in RegionGenerator. Assumes some wrong control flow.
> > > The bug existed before this commit, i.e. DeLICM now can apply a
> > > mapping that it did not before.
> > >
> > > Fixed in r361204. Thanks for reporting! If this does not fix the aosp
> > > buildbot, I'd be happy to get another reduced testcase.
> > >
> > > Michael
> > >
> > >
> > >
> > > Am Do., 16. Mai 2019 um 18:01 Uhr schrieb Eli Friedman
> > <efriedma at quicinc.com>:
> > > >
> > > > This is causing a bunch of crashes on the polly AOSP buildbot
> > (http://lab.llvm.org:8011/builders/aosp-O3-polly-before-vectorizer-unprofitable
> > ).  I'm seeing an IR verifier failure: "PHINode should have one entry for each
> > predecessor of its parent basic block".
> > > >
> > > > Testcase attached.  Reproduce with "opt -polly-delicm -polly-codegen -polly-
> > process-unprofitable"
> > > >
> > > > -Eli
> > > >
> > > > > -----Original Message-----
> > > > > From: llvm-commits <llvm-commits-bounces at lists.llvm.org> On Behalf Of
> > > > > Michael Kruse via llvm-commits
> > > > > Sent: Friday, May 10, 2019 11:38 AM
> > > > > To: llvm-commits at lists.llvm.org
> > > > > Subject: [EXT] [polly] r360454 - [ZoneAlgo] Fix PHI inconsistency in invalid
> > > > > contexts.
> > > > >
> > > > > Author: meinersbur
> > > > > Date: Fri May 10 11:38:13 2019
> > > > > New Revision: 360454
> > > > >
> > > > > URL: http://llvm.org/viewvc/llvm-project?rev=360454&view=rev
> > > > > Log:
> > > > > [ZoneAlgo] Fix PHI inconsistency in invalid contexts.
> > > > >
> > > > > PHI nodes (reads) could point to multiple instances of predecessor
> > > > > blocks (PHI writes) when in an invalid context. Fix by removing PHI
> > > > > instances that are in an invalid or ouside assumed context.
> > > > >
> > > > > This fixes llvm.org/PR41656.
> > > > >
> > > > > Added:
> > > > >     polly/trunk/test/DeLICM/pr41656.ll
> > > > > Modified:
> > > > >     polly/trunk/include/polly/Support/ISLTools.h
> > > > >     polly/trunk/lib/Support/ISLTools.cpp
> > > > >     polly/trunk/lib/Transform/ZoneAlgo.cpp
> > > > >     polly/trunk/test/DeLICM/reduction_looprotate_hoisted.ll
> > > > >     polly/trunk/test/ScopInfo/stmt_with_read_but_without_sideffect.ll
> > > > >
> > > > > Modified: polly/trunk/include/polly/Support/ISLTools.h
> > > > > URL: http://llvm.org/viewvc/llvm-
> > > > >
> > project/polly/trunk/include/polly/Support/ISLTools.h?rev=360454&r1=360453&r
> > > > > 2=360454&view=diff
> > > > >
> > =================================================================
> > > > > =============
> > > > > --- polly/trunk/include/polly/Support/ISLTools.h (original)
> > > > > +++ polly/trunk/include/polly/Support/ISLTools.h Fri May 10 11:38:13 2019
> > > > > @@ -463,6 +463,21 @@ isl::union_map applyDomainRange(isl::uni
> > > > >  /// @return { Domain[] -> Range[] }
> > > > >  isl::map intersectRange(isl::map Map, isl::union_set Range);
> > > > >
> > > > > +/// Subtract the parameter space @p Params from @p Map.
> > > > > +/// This is akin to isl::map::intersect_params.
> > > > > +///
> > > > > +/// Example:
> > > > > +///   subtractParams(
> > > > > +///     { [i] -> [i] },
> > > > > +///     [x] -> { : x < 0 }
> > > > > +///   ) = [x] -> { [i] -> [i] : x >= 0 }
> > > > > +///
> > > > > +/// @param Map    Remove the conditions of @p Params from this map.
> > > > > +/// @param Params Parameter set to subtract.
> > > > > +///
> > > > > +/// @param The map with the parameter conditions removed.
> > > > > +isl::map subtractParams(isl::map Map, isl::set Params);
> > > > > +
> > > > >  /// If @p PwAff maps to a constant, return said constant. If @p Max/@p
> > Min, it
> > > > >  /// can also be a piecewise constant and it would return the
> > > > > minimum/maximum
> > > > >  /// value. Otherwise, return NaN.
> > > > >
> > > > > Modified: polly/trunk/lib/Support/ISLTools.cpp
> > > > > URL: http://llvm.org/viewvc/llvm-
> > > > >
> > project/polly/trunk/lib/Support/ISLTools.cpp?rev=360454&r1=360453&r2=3604
> > > > > 54&view=diff
> > > > >
> > =================================================================
> > > > > =============
> > > > > --- polly/trunk/lib/Support/ISLTools.cpp (original)
> > > > > +++ polly/trunk/lib/Support/ISLTools.cpp Fri May 10 11:38:13 2019
> > > > > @@ -507,6 +507,12 @@ isl::map polly::intersectRange(isl::map
> > > > >    return Map.intersect_range(RangeSet);
> > > > >  }
> > > > >
> > > > > +isl::map polly::subtractParams(isl::map Map, isl::set Params) {
> > > > > +  auto MapSpace = Map.get_space();
> > > > > +  auto ParamsMap =
> > isl::map::universe(MapSpace).intersect_params(Params);
> > > > > +  return Map.subtract(ParamsMap);
> > > > > +}
> > > > > +
> > > > >  isl::val polly::getConstant(isl::pw_aff PwAff, bool Max, bool Min) {
> > > > >    assert(!Max || !Min); // Cannot return min and max at the same time.
> > > > >    isl::val Result;
> > > > >
> > > > > Modified: polly/trunk/lib/Transform/ZoneAlgo.cpp
> > > > > URL: http://llvm.org/viewvc/llvm-
> > > > >
> > project/polly/trunk/lib/Transform/ZoneAlgo.cpp?rev=360454&r1=360453&r2=3
> > > > > 60454&view=diff
> > > > >
> > =================================================================
> > > > > =============
> > > > > --- polly/trunk/lib/Transform/ZoneAlgo.cpp (original)
> > > > > +++ polly/trunk/lib/Transform/ZoneAlgo.cpp Fri May 10 11:38:13 2019
> > > > > @@ -563,6 +563,11 @@ isl::union_map ZoneAlgorithm::computePer
> > > > >
> > > > >    // { DomainPHIRead[] -> Scatter[] }
> > > > >    isl::map PHIWriteTimes = BeforeRead.intersect_range(WriteTimes);
> > > > > +
> > > > > +  // Remove instances outside the context.
> > > > > +  PHIWriteTimes = PHIWriteTimes.intersect_params(S-
> > >getAssumedContext());
> > > > > +  PHIWriteTimes = subtractParams(PHIWriteTimes, S-
> > >getInvalidContext());
> > > > > +
> > > > >    isl::map LastPerPHIWrites = PHIWriteTimes.lexmax();
> > > > >
> > > > >    // { DomainPHIRead[] -> DomainPHIWrite[] }
> > > > >
> > > > > Added: polly/trunk/test/DeLICM/pr41656.ll
> > > > > URL: http://llvm.org/viewvc/llvm-
> > > > > project/polly/trunk/test/DeLICM/pr41656.ll?rev=360454&view=auto
> > > > >
> > =================================================================
> > > > > =============
> > > > > --- polly/trunk/test/DeLICM/pr41656.ll (added)
> > > > > +++ polly/trunk/test/DeLICM/pr41656.ll Fri May 10 11:38:13 2019
> > > > > @@ -0,0 +1,89 @@
> > > > > +; RUN: opt %loadPolly -polly-delicm -analyze < %s | FileCheck %s
> > > > > +;
> > > > > +; llvm.org/PR41656
> > > > > +;
> > > > > +; This test case has an InvalidContext such that part of the predecessors
> > > > > +; of for.body.us.i lie within the invalid context. This causes a
> > > > > +; consistency check withing the invalid context of PR41656 to fail.
> > > > > +;
> > > > > +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
> > > > > +
> > > > > +define dso_local void @main() local_unnamed_addr #0 {
> > > > > +entry:
> > > > > +  %call24 = tail call i32 @av_get_channel_layout_nb_channels() #2
> > > > > +  br label %if.end30
> > > > > +
> > > > > +if.end30:                                         ; preds = %entry
> > > > > +  br i1 undef, label %if.then40, label %do.body.preheader
> > > > > +
> > > > > +do.body.preheader:                                ; preds = %if.end30
> > > > > +  %idx.ext.i = sext i32 %call24 to i64
> > > > > +  %wide.trip.count.i = zext i32 %call24 to i64
> > > > > +  %0 = load double*, double** undef, align 8, !tbaa !1
> > > > > +  br label %for.body.us.preheader.i
> > > > > +
> > > > > +if.then40:                                        ; preds = %if.end30
> > > > > +  unreachable
> > > > > +
> > > > > +for.body.us.preheader.i:                          ; preds = %do.body.preheader
> > > > > +  br i1 false, label %for.body.us.i.us, label %for.body.us.i
> > > > > +
> > > > > +for.body.us.i.us:                                 ; preds = %for.body.us.preheader.i
> > > > > +  br label %fill_samples.exit
> > > > > +
> > > > > +for.body.us.i:                                    ; preds =
> > %for.cond2.for.end_crit_edge.us.i,
> > > > > %for.body.us.preheader.i
> > > > > +  %t.1 = phi double [ undef, %for.cond2.for.end_crit_edge.us.i ], [
> > > > > 0.000000e+00, %for.body.us.preheader.i ]
> > > > > +  %i.05.us.i = phi i32 [ %inc8.us.i, %for.cond2.for.end_crit_edge.us.i ], [ 0,
> > > > > %for.body.us.preheader.i ]
> > > > > +  %dstp.03.us.i = phi double* [ %add.ptr.us.i,
> > %for.cond2.for.end_crit_edge.us.i
> > > > > ], [ %0, %for.body.us.preheader.i ]
> > > > > +  %mul.us.i = fmul nsz double %t.1, 0x40A59933FC6A96C1
> > > > > +  %1 = call nsz double @llvm.sin.f64(double %mul.us.i) #2
> > > > > +  store double %1, double* %dstp.03.us.i, align 8, !tbaa !5
> > > > > +  %2 = bitcast double* %dstp.03.us.i to i64*
> > > > > +  br label %for.body5.us.for.body5.us_crit_edge.i
> > > > > +
> > > > > +for.body5.us.for.body5.us_crit_edge.i:            ; preds =
> > > > >
> > %for.body5.us.for.body5.us_crit_edge.i.for.body5.us.for.body5.us_crit_edge.i_
> > > > > crit_edge, %for.body.us.i
> > > > > +  %indvars.iv.next.i66 = phi i64 [ 2, %for.body.us.i ], [ %indvars.iv.next.i,
> > > > >
> > %for.body5.us.for.body5.us_crit_edge.i.for.body5.us.for.body5.us_crit_edge.i_
> > > > > crit_edge ]
> > > > > +  %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.next.i66, 1
> > > > > +  %exitcond.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i
> > > > > +  br i1 %exitcond.i, label %for.cond2.for.end_crit_edge.us.i, label
> > > > >
> > %for.body5.us.for.body5.us_crit_edge.i.for.body5.us.for.body5.us_crit_edge.i_
> > > > > crit_edge
> > > > > +
> > > > >
> > +for.body5.us.for.body5.us_crit_edge.i.for.body5.us.for.body5.us_crit_edge.i_c
> > > > > rit_edge: ; preds = %for.body5.us.for.body5.us_crit_edge.i
> > > > > +  %.pre10.i.pre = load i64, i64* %2, align 8, !tbaa !5
> > > > > +  br label %for.body5.us.for.body5.us_crit_edge.i
> > > > > +
> > > > > +for.cond2.for.end_crit_edge.us.i:                 ; preds =
> > > > > %for.body5.us.for.body5.us_crit_edge.i
> > > > > +  %add.ptr.us.i = getelementptr inbounds double, double* %dstp.03.us.i,
> > i64
> > > > > %idx.ext.i
> > > > > +  %inc8.us.i = add nuw nsw i32 %i.05.us.i, 1
> > > > > +  %exitcond7.i = icmp eq i32 %inc8.us.i, 1024
> > > > > +  br i1 %exitcond7.i, label %fill_samples.exit, label %for.body.us.i
> > > > > +
> > > > > +fill_samples.exit:                                ; preds =
> > %for.cond2.for.end_crit_edge.us.i,
> > > > > %for.body.us.i.us
> > > > > +  ret void
> > > > > +}
> > > > > +
> > > > > +declare dso_local i32 @av_get_channel_layout_nb_channels()
> > > > > local_unnamed_addr #0
> > > > > +
> > > > > +; Function Attrs: nounwind readnone speculatable
> > > > > +declare double @llvm.sin.f64(double) #1
> > > > > +
> > > > > +attributes #0 = { "use-soft-float"="false" }
> > > > > +attributes #1 = { nounwind readnone speculatable }
> > > > > +attributes #2 = { nounwind }
> > > > > +
> > > > > +!llvm.ident = !{!0}
> > > > > +
> > > > > +!0 = !{!"clang version 9.0.0 (https://github.com/llvm/llvm-project.git
> > > > > 2436237895b70ed44cf256f67eb2f74e147eb559)"}
> > > > > +!1 = !{!2, !2, i64 0}
> > > > > +!2 = !{!"any pointer", !3, i64 0}
> > > > > +!3 = !{!"omnipotent char", !4, i64 0}
> > > > > +!4 = !{!"Simple C/C++ TBAA"}
> > > > > +!5 = !{!6, !6, i64 0}
> > > > > +!6 = !{!"double", !3, i64 0}
> > > > > +
> > > > > +
> > > > > +; Only write to scalar if call24 >= 3 (i.e. not in invalid context)
> > > > > +; Since it should be never executed otherwise, the condition is not strictly
> > > > > necessary.
> > > > > +; CHECK:          Stmt_for_body_us_preheader_i
> > > > > +; CHECK-NEXT:            MustWriteAccess :=  [Reduction Type: NONE]
> > [Scalar: 1]
> > > > > +; CHECK-NEXT:                 [call24] -> { Stmt_for_body_us_preheader_i[] ->
> > > > > MemRef_t_1__phi[] };
> > > > > +; CHECK-NEXT:            new: [call24] -> { Stmt_for_body_us_preheader_i[] -
> > >
> > > > > MemRef1[0, 0] : call24 >= 3 };
> > > > >
> > > > > Modified: polly/trunk/test/DeLICM/reduction_looprotate_hoisted.ll
> > > > > URL: http://llvm.org/viewvc/llvm-
> > > > >
> > project/polly/trunk/test/DeLICM/reduction_looprotate_hoisted.ll?rev=360454&
> > > > > r1=360453&r2=360454&view=diff
> > > > >
> > =================================================================
> > > > > =============
> > > > > --- polly/trunk/test/DeLICM/reduction_looprotate_hoisted.ll (original)
> > > > > +++ polly/trunk/test/DeLICM/reduction_looprotate_hoisted.ll Fri May 10
> > > > > 11:38:13 2019
> > > > > @@ -70,7 +70,7 @@ return:
> > > > >  ; CHECK-NEXT:     Stmt_reduction_preheader
> > > > >  ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE]
> > [Scalar: 1]
> > > > >  ; CHECK-NEXT:                 [Start] -> { Stmt_reduction_preheader[i0] ->
> > > > > MemRef_phi__phi[] };
> > > > > -; CHECK-NEXT:            new: [Start] -> { Stmt_reduction_preheader[i0] ->
> > > > > MemRef_A[i0] };
> > > > > +; CHECK-NEXT:            new: [Start] -> { Stmt_reduction_preheader[i0] ->
> > > > > MemRef_A[i0] : Start >= 2147483648 or Start <= 2147483646 };
> > > > >  ; CHECK-NEXT:     Stmt_reduction_for
> > > > >  ; CHECK-NEXT:             ReadAccess :=    [Reduction Type: NONE] [Scalar: 1]
> > > > >  ; CHECK-NEXT:                 [Start] -> { Stmt_reduction_for[i0, i1] ->
> > > > > MemRef_phi__phi[] };
> > > > >
> > > > > Modified:
> > polly/trunk/test/ScopInfo/stmt_with_read_but_without_sideffect.ll
> > > > > URL: http://llvm.org/viewvc/llvm-
> > > > >
> > project/polly/trunk/test/ScopInfo/stmt_with_read_but_without_sideffect.ll?rev
> > > > > =360454&r1=360453&r2=360454&view=diff
> > > > >
> > =================================================================
> > > > > =============
> > > > > --- polly/trunk/test/ScopInfo/stmt_with_read_but_without_sideffect.ll
> > (original)
> > > > > +++ polly/trunk/test/ScopInfo/stmt_with_read_but_without_sideffect.ll Fri
> > May
> > > > > 10 11:38:13 2019
> > > > > @@ -86,7 +86,7 @@ for.inc.1:
> > > > >  ; CHECK-NEXT:     Stmt_if_else_1_last
> > > > >  ; CHECK-NEXT:             MustWriteAccess :=  [Reduction Type: NONE]
> > [Scalar: 1]
> > > > >  ; CHECK-NEXT:                 [p_0] -> { Stmt_if_else_1_last[i0] ->
> > > > > MemRef_min_1_1__phi[] };
> > > > > -; CHECK-NEXT:            new: [p_0] -> { Stmt_if_else_1_last[i0] ->
> > MemRef_ath[i0]
> > > > > };
> > > > > +; CHECK-NEXT:            new: [p_0] -> { Stmt_if_else_1_last[i0] ->
> > > > > MemRef_ath[i0] : p_0 <= 576460752303423487 };
> > > > >  ; CHECK-NEXT:     Stmt_for_inc_1
> > > > >  ; CHECK-NEXT:             ReadAccess :=       [Reduction Type: NONE] [Scalar:
> > 1]
> > > > >  ; CHECK-NEXT:                 [p_0] -> { Stmt_for_inc_1[i0] ->
> > > > > MemRef_min_1_1__phi[] };
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > llvm-commits mailing list
> > > > > llvm-commits at lists.llvm.org
> > > > > https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list