The revision marks the overflow arithmetic intrinsics
and the freeze operation as pure. This change enables
inlining and possible other optimizations for these
operations.
Reviewed By: Dinistro
Differential Revision: https://reviews.llvm.org/D150679
// Intrinsics with multiple returns.
class LLVM_ArithWithOverflowOp<string mnem>
- : LLVM_IntrOp<mnem, [0], [], [SameOperandsElementType], 2>,
+ : LLVM_IntrOp<mnem, [0], [], [Pure, SameOperandsElementType], 2>,
Arguments<(ins LLVM_ScalarOrVectorOf<AnySignlessInteger>,
LLVM_ScalarOrVectorOf<AnySignlessInteger>)>;
$res = op;
}];
}
-def LLVM_FreezeOp : LLVM_Op<"freeze", [SameOperandsAndResultType]> {
+def LLVM_FreezeOp : LLVM_Op<"freeze", [Pure, SameOperandsAndResultType]> {
let arguments = (ins LLVM_Type:$val);
let results = (outs LLVM_Type:$res);
let builders = [LLVM_OneResultOpBuilder];