Author: Jakub Chlanda Date: 2023-10-03T14:28:01+02:00 New Revision: 5ec9faf007cc2589682cd28a10aa5a351f6aebda
URL: https://github.com/llvm/llvm-project/commit/5ec9faf007cc2589682cd28a10aa5a351f6aebda DIFF: https://github.com/llvm/llvm-project/commit/5ec9faf007cc2589682cd28a10aa5a351f6aebda.diff LOG: [LIBCLC] Teach prepare-builtins how to handle text based IR (#66993) Added: Modified: libclc/utils/prepare-builtins.cpp Removed: ################################################################################ diff --git a/libclc/utils/prepare-builtins.cpp b/libclc/utils/prepare-builtins.cpp index 550b5971913f48a..ebdbc68cfee3b3c 100644 --- a/libclc/utils/prepare-builtins.cpp +++ b/libclc/utils/prepare-builtins.cpp @@ -5,23 +5,27 @@ #include "llvm/Bitcode/ReaderWriter.h" #endif +#include "llvm/Config/llvm-config.h" #include "llvm/IR/Function.h" #include "llvm/IR/GlobalVariable.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" +#include "llvm/IRReader/IRReader.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/ErrorOr.h" +#include "llvm/Support/FileSystem.h" #include "llvm/Support/ManagedStatic.h" #include "llvm/Support/MemoryBuffer.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/raw_ostream.h" -#include "llvm/Support/ErrorOr.h" +#include "llvm/Support/SourceMgr.h" #include "llvm/Support/ToolOutputFile.h" -#include "llvm/Config/llvm-config.h" +#include "llvm/Support/raw_ostream.h" #include <system_error> using namespace llvm; +static ExitOnError ExitOnErr; + static cl::opt<std::string> InputFilename(cl::Positional, cl::desc("<input bitcode>"), cl::init("-")); @@ -29,6 +33,9 @@ static cl::opt<std::string> OutputFilename("o", cl::desc("Output filename"), cl::value_desc("filename")); +static cl::opt<bool> TextualOut("S", cl::desc("Emit LLVM textual assembly"), + cl::init(false)); + int main(int argc, char **argv) { LLVMContext Context; llvm_shutdown_obj Y; // Call llvm_shutdown() on exit. @@ -45,17 +52,15 @@ int main(int argc, char **argv) { ErrorMessage = ec.message(); } else { std::unique_ptr<MemoryBuffer> &BufferPtr = BufferOrErr.get(); - ErrorOr<std::unique_ptr<Module>> ModuleOrErr = + SMDiagnostic Err; + std::unique_ptr<llvm::Module> MPtr = #if HAVE_LLVM > 0x0390 - expectedToErrorOrAndEmitErrors(Context, - parseBitcodeFile(BufferPtr.get()->getMemBufferRef(), Context)); + ExitOnErr(Expected<std::unique_ptr<llvm::Module>>( + parseIR(BufferPtr.get()->getMemBufferRef(), Err, Context))); #else - parseBitcodeFile(BufferPtr.get()->getMemBufferRef(), Context); + parseIR(BufferPtr.get()->getMemBufferRef(), Err, Context); #endif - if (std::error_code ec = ModuleOrErr.getError()) - ErrorMessage = ec.message(); - - M = ModuleOrErr.get().release(); + M = MPtr.release(); } } @@ -105,14 +110,16 @@ int main(int argc, char **argv) { exit(1); } + if (TextualOut) + M->print(Out->os(), nullptr, true); + else #if HAVE_LLVM >= 0x0700 - WriteBitcodeToFile(*M, Out->os()); + WriteBitcodeToFile(*M, Out->os()); #else - WriteBitcodeToFile(M, Out->os()); + WriteBitcodeToFile(M, Out->os()); #endif // Declare success. Out->keep(); return 0; } - _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits