From 58acbce3def63a207b8f5a69318a99666a4aac53 Mon Sep 17 00:00:00 2001 From: aqjune Date: Tue, 5 Nov 2019 15:53:22 +0900 Subject: [IR] Add Freeze instruction Summary: - Define Instruction::Freeze, let it be UnaryOperator - Add support for freeze to LLLexer/LLParser/BitcodeReader/BitcodeWriter The format is `%x = freeze %v` - Add support for freeze instruction to llvm-c interface. - Add m_Freeze in PatternMatch. - Erase freeze when lowering IR to SelDag. Reviewers: deadalnix, hfinkel, efriedma, lebedev.ri, nlopes, jdoerfert, regehr, filcab, delcypher, whitequark Reviewed By: lebedev.ri, jdoerfert Subscribers: jfb, kristof.beyls, hiraditya, lebedev.ri, steven_wu, dexonsmith, xbolva00, delcypher, spatel, regehr, trentxintong, vsk, filcab, nlopes, mehdi_amini, deadalnix, llvm-commits Differential Revision: https://reviews.llvm.org/D29011 --- llvm/lib/IR/Verifier.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'llvm/lib/IR/Verifier.cpp') diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index e89d8b0a9b5..91026c3b1b2 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -3145,6 +3145,9 @@ void Verifier::visitUnaryOperator(UnaryOperator &U) { Assert(U.getType()->isFPOrFPVectorTy(), "FNeg operator only works with float types!", &U); break; + case Instruction::Freeze: + // Freeze can take all kinds of types. + break; default: llvm_unreachable("Unknown UnaryOperator opcode!"); } -- cgit v1.2.3