llvm/llvm-project
Ver no GitHubFailure to recognise unnecessary sext for add+cmp
Open
#130.088 aberto em 6 de mar. de 2025
good first issuellvm:instcombinemissed-optimization
Métricas do repositório
- Stars
- (26.378 stars)
- Métricas de merge de PR
- (Mesclagem média 1d 2h) (1.000 fundiu PRs em 30d)
Description
Pulled out #76524 - we fail to recognize that extension is unnecessary and that the trunc is nsw
define i8 @src(i16 noundef %x) {
entry:
%conv = sext i16 noundef %x to i128
%add = add i128 %conv, 128
%or.cond.i = icmp ult i128 %add, 256
assume i1 %or.cond.i
%conv1 = trunc i16 noundef %x to i8
ret i8 %conv1
}
=>
define i8 @tgt(i16 noundef %x) {
entry:
%add = add i16 noundef %x, 128
%or.cond.i = icmp ult i16 %add, 256
assume i1 %or.cond.i
%conv1 = trunc nsw i16 noundef %x to i8
ret i8 %conv1
}
Transformation seems to be correct!