intel / intel/llvm

Assert in ScalarEvolution.cpp:4075

Open
#3,796 2 comments 0 reactions 1 assignee Claimed by @AlexeySachkov View on GitHub
bug confirmed
Dominant language
LLVM
Stars
1.5k
Forks
854
Avg merge
3d 17h
Merged PRs (30d)
137

Description

Here's the reduced tests case:

```c++
extern int a[][1][1][1][1];
void j(short b, char c, char d[][9][0][5]) {
for (bool e;;)
for (char f;;)
for (short g;;)
for (char h;; h += b)
for (bool i = 0; i < bool(c ? d[e][f][g][h] : 0); i = 1)
a[e][f][g][h][i] = 0;
}
```

When compiled by Intel version of clang (for example, by latest compiler `DPC++ daily 2021-05-20`) with `-O2`, it asserts at `ScalarEvolution.cpp:4075`. The bug is not reproducible with "pure" open source clang.
```bash
> clang++ func.cpp -c -O2
clang++: /netbatch/donb1102875_00/runDir/jenkins-dir/workspace/Tools_SH/SYCLOS_Nightly/RHEL/llvm.src/llvm/lib/Analysis/ScalarEvolution.cpp:4075: const llvm::SCEV* llvm::ScalarEvolution::getNoopOrSignExtend(const llvm::SCEV*, llvm::Type*): Assertion `getTypeSizeInBits(SrcTy) <= getTypeSizeInBits(Ty) && "getNoopOrSignExtend cannot truncate!"' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: clang++ func.cpp -c -O2
1. parser at end of file
2. Per-module optimization passes
3. Running pass 'Function Pass Manager' on module 'func.cpp'.
4. Running pass 'Loop Load Elimination' on function '@_Z1jscPA9_A0_A5_c'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
clang++(_ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamEi+0x1c)[0x1cad20c]
clang++(_ZN4llvm3sys17RunSignalHandlersEv+0x34)[0x1cab1d4]
clang++(_ZN4llvm3sys15CleanupOnSignalEm+0xa5)[0x1cab435]
clang++[0x1c133d8]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x153c0)[0x7fd631ddd3c0]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0xcb)[0x7fd63187418b]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x12b)[0x7fd631853859]
/lib/x86_64-linux-gnu/libc.so.6(+0x25729)[0x7fd631853729]
/lib/x86_64-linux-gnu/libc.so.6(+0x36f36)[0x7fd631864f36]
clang++[0xf5fc4a]
clang++(_ZN4llvm14LoopAccessInfo20collectStridedAccessEPNS_5ValueE+0x10b)[0x106a9eb]
clang++(_ZN4llvm14LoopAccessInfo11analyzeLoopEPNS_9AAResultsEPNS_8LoopInfoEPKNS_17TargetLibraryInfoEPNS_13DominatorTreeE+0x510)[0x106bd20]
clang++(_ZN4llvm24LoopAccessLegacyAnalysis7getInfoEPNS_4LoopE+0x107)[0x106ddf7]
clang++[0x2f01993]
clang++[0x2f0454a]
clang++(_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE+0x3b8)[0x162ef58]
clang++(_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE+0x39)[0x162fa89]
clang++(_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE+0x366)[0x162e806]
clang++[0x1f88091]
clang++(_ZN5clang17EmitBackendOutputERNS_17DiagnosticsEngineERKNS_19HeaderSearchOptionsERKNS_14CodeGenOptionsERKNS_13TargetOptionsERKNS_11LangOptionsEN4llvm9StringRefEPNSE_6ModuleENS_13BackendActionESt10unique_ptrINSE_17raw_pwrite_streamESt14default_deleteISK_EE+0x605)[0x1f8a225]
clang++[0x2bdbd3a]
clang++(_ZN5clang8ParseASTERNS_4SemaEbb+0x469)[0x386aa99]
clang++(_ZN5clang13CodeGenAction13ExecuteActionEv+0x299)[0x2bdab19]
clang++(_ZN5clang14FrontendAction7ExecuteEv+0xb1)[0x25a9721]
clang++(_ZN5clang16CompilerInstance13ExecuteActionERNS_14FrontendActionE+0x152)[0x25475f2]
clang++(_ZN5clang25ExecuteCompilerInvocationEPNS_16CompilerInstanceE+0xa5a)[0x2672fda]
clang++(_Z8cc1_mainN4llvm8ArrayRefIPKcEES2_Pv+0x12e4)[0xaecd44]
clang++[0xae8211]
clang++[0x23ef3d5]
clang++(_ZN4llvm20CrashRecoveryContext9RunSafelyENS_12function_refIFvvEEE+0x23)[0x1c134b3]
clang++[0x23f0ab1]
clang++(_ZNK5clang6driver11Compilation14ExecuteCommandERKNS0_7CommandERPS3_+0x87)[0x23bbfa7]
clang++(_ZNK5clang6driver11Compilation11ExecuteJobsERKNS0_7JobListERN4llvm15SmallVectorImplISt4pairIiPKNS0_7CommandEEEE+0x9e)[0x23bc97e]
clang++(_ZN5clang6driver6Driver18ExecuteCompilationERNS0_11CompilationERN4llvm15SmallVectorImplISt4pairIiPKNS0_7CommandEEEE+0x8a)[0x23c5eca]
clang++(main+0x1bf2)[0xa67f92]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x7fd6318550b3]
clang++[0xae7de3]
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 13.0.0 (https://github.com/intel/llvm.git 7e4a38606069cc205f8148430559b5698a778a77)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/dybaboki/env/dpcpp_compiler/bin
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/func-83be48.cpp
clang++: note: diagnostic msg: /tmp/func-83be48.sh
clang++: note: diagnostic msg:

********************
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.