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

Eli Friedman via llvm-commits llvm-commits at lists.llvm.org
Tue May 21 11:32:59 PDT 2019


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: polly-delicm-crash-20190521.ll
Type: application/octet-stream
Size: 2360 bytes
Desc: polly-delicm-crash-20190521.ll
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190521/395a8a7b/attachment-0001.obj>


More information about the llvm-commits mailing list