LLVM Bugzilla is read-only and represents the historical archive of all LLVM issues filled before November 26, 2021. Use github to submit LLVM bugs

Bug 51241 - clang crashes on valid code at -O1 and above: Instruction does not dominate all uses!
Summary: clang crashes on valid code at -O1 and above: Instruction does not dominate a...
Status: RESOLVED FIXED
Alias: None
Product: libraries
Classification: Unclassified
Component: Scalar Optimizations (show other bugs)
Version: trunk
Hardware: PC All
: P enhancement
Assignee: Unassigned LLVM Bugs
URL:
Keywords:
Depends on:
Blocks: release-13.0.1
  Show dependency tree
 
Reported: 2021-07-28 01:48 PDT by Zhendong Su
Modified: 2021-10-11 20:29 PDT (History)
5 users (show)

See Also:
Fixed By Commit(s): 5b83261c1518 2f43c816f18a


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Zhendong Su 2021-07-28 01:48:55 PDT
It appears to be a recent regression.

[515] % clangtk -v
clang version 14.0.0 (https://github.com/llvm/llvm-project.git 0a1ca2ad4ce239abc8d844f33048af58648edb80)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/bin
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/8
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/7.5.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
[516] % 
[516] % clangtk -O0 small.c
[517] % 
[517] % clangtk -O1 small.c
Instruction does not dominate all uses!
  %div = sdiv i32 7, %0
  store i32 %div, i32* @b, align 4, !tbaa !3
in function main
fatal error: error in backend: Broken function found, compilation aborted!
clang-14: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 14.0.0 (https://github.com/llvm/llvm-project.git 0a1ca2ad4ce239abc8d844f33048af58648edb80)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /local/suz-local/opfuzz/bin
clang-14: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-14: note: diagnostic msg: /tmp/small-52fa75.c
clang-14: note: diagnostic msg: /tmp/small-52fa75.sh
clang-14: note: diagnostic msg: 

********************
[518] % 
[518] % cat small.c
int a, b, c = 1, d;
int main() {
  a = c;
  int f = d && b % c && 7 % c, g = 7 / c;
  c = f;
  b = g;
  return 0;
}
Comment 1 Sanjay Patel 2021-07-28 07:12:53 PDT
This is the likely source of the bug:
https://reviews.llvm.org/rGe38b7e894808ec2a0c976ab01e44364f167508d3
Comment 2 Sanjay Patel 2021-07-28 07:32:28 PDT
Reduced test, crashes (invalid IR) with "opt -div-rem-pairs":

define i32 @PR51241(i1 %b1, i1 %b2, i32 %t0) {
entry:
  br i1 %b1, label %land.end, label %land.lhs.true

land.lhs.true:                 
  br i1 %b2, label %land.end, label %land.rhs

land.rhs:                                  
  %rem2 = srem i32 7, %t0
  br label %land.end

land.end:    
  %div = sdiv i32 7, %t0
  ret i32 %div
}
Comment 3 Sanjay Patel 2021-07-28 08:23:41 PDT
Should be fixed with:
https://reviews.llvm.org/rG5b83261c1518

Marking as blocker for release 13.0 since it would be a crashing regression.
Comment 4 Tom Stellard 2021-08-02 13:59:16 PDT
Merged: 2f43c816f18a