Skip to content

Commit fc9a507

Browse files
committed
llvm-reduce: Reduce nuw/nsw flags from trunc
1 parent acb2a47 commit fc9a507

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

llvm/test/tools/llvm-reduce/reduce-flags.ll

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,3 +232,35 @@ define i32 @or_disjoint_keep(i32 %a, i32 %b) {
232232
%op = or disjoint i32 %a, %b
233233
ret i32 %op
234234
}
235+
236+
; CHECK-LABEL: @trunc_nuw_drop(
237+
; INTERESTING: = trunc
238+
; RESULT: trunc i64
239+
define i32 @trunc_nuw_drop(i64 %a) {
240+
%op = trunc nuw i64 %a to i32
241+
ret i32 %op
242+
}
243+
244+
; CHECK-LABEL: @trunc_nuw_keep(
245+
; INTERESTING: = trunc nuw
246+
; RESULT: trunc nuw i64
247+
define i32 @trunc_nuw_keep(i64 %a) {
248+
%op = trunc nuw i64 %a to i32
249+
ret i32 %op
250+
}
251+
252+
; CHECK-LABEL: @trunc_nsw_drop(
253+
; INTERESTING: = trunc
254+
; RESULT: trunc i64
255+
define i32 @trunc_nsw_drop(i64 %a) {
256+
%op = trunc nsw i64 %a to i32
257+
ret i32 %op
258+
}
259+
260+
; CHECK-LABEL: @trunc_nsw_keep(
261+
; INTERESTING: = trunc nsw
262+
; RESULT: trunc nsw i64
263+
define i32 @trunc_nsw_keep(i64 %a) {
264+
%op = trunc nsw i64 %a to i32
265+
ret i32 %op
266+
}

llvm/tools/llvm-reduce/deltas/ReduceInstructionFlags.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ static void reduceFlagsInModule(Oracle &O, ReducerWorkItem &WorkItem) {
2727
I.setHasNoSignedWrap(false);
2828
if (OBO->hasNoUnsignedWrap() && !O.shouldKeep())
2929
I.setHasNoUnsignedWrap(false);
30+
} else if (auto *Trunc = dyn_cast<TruncInst>(&I)) {
31+
if (Trunc->hasNoSignedWrap() && !O.shouldKeep())
32+
Trunc->setHasNoSignedWrap(false);
33+
if (Trunc->hasNoUnsignedWrap() && !O.shouldKeep())
34+
Trunc->setHasNoUnsignedWrap(false);
3035
} else if (auto *PE = dyn_cast<PossiblyExactOperator>(&I)) {
3136
if (PE->isExact() && !O.shouldKeep())
3237
I.setIsExact(false);

0 commit comments

Comments
 (0)