From 0e0824a9f0fb10192d389599a772dfc60e4c5d26 Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Mon, 6 Jan 2025 20:54:51 +0900 Subject: [PATCH 01/19] Use native `AddIncludeFile` method --- cc/lib/TableGen.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/cc/lib/TableGen.cpp b/cc/lib/TableGen.cpp index b2ba602..f14f8a8 100644 --- a/cc/lib/TableGen.cpp +++ b/cc/lib/TableGen.cpp @@ -12,6 +12,7 @@ #include "TableGen.h" #include "Types.h" #include +#include using ctablegen::RecordMap; using ctablegen::tableGenFromRecType; @@ -43,16 +44,9 @@ bool ctablegen::TableGenParser::addSource(const char *source) { return true; } -bool ctablegen::TableGenParser::addSourceFile(const StringRef source) { - ErrorOr> FileOrErr = - MemoryBuffer::getFile(source); - - if (std::error_code EC = FileOrErr.getError()) { - return false; - } - - sourceMgr.AddNewSourceBuffer(std::move(*FileOrErr), SMLoc()); - return true; +bool ctablegen::TableGenParser::addSourceFile(const StringRef path) { + std::string full_path = ""; + return !sourceMgr.AddIncludeFile(std::string(path), SMLoc(), full_path); } TableGenParserRef tableGenGet() { From d64678bf53a48e26be4d395ae94d677597932a2b Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Mon, 6 Jan 2025 21:13:42 +0900 Subject: [PATCH 02/19] Add test --- src/lib.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index a31aa02..f304347 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -71,6 +71,24 @@ //! # } //! ``` //! +//! You can also pass an included file's path directly. +//! +//! ```rust +//! use tblgen_alt::{TableGenParser, RecordKeeper}; +//! use std::path::Path; +//! +//! # fn main() -> Result<(), Box> { +//! let keeper: RecordKeeper = TableGenParser::new() +//! .add_source_file("mlir/IR/OpBase.td")? +//! .add_include_path(&format!("{}/include", std::env::var("TABLEGEN_190_PREFIX")?)) +//! .parse()?; +//! let i32_def = keeper.def("I32").expect("has I32 def"); +//! assert!(i32_def.subclass_of("I")); +//! assert_eq!(i32_def.int_value("bitwidth"), Ok(32)); +//! # Ok(()) +//! # } +//! ``` +//! //! # API Stability //! //! LLVM does not provide a stable C API for TableGen, and the C API provided by From 2044c7b96b1a7f0c0dd91eb1af889ea06d047655 Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Mon, 6 Jan 2025 22:15:18 +0900 Subject: [PATCH 03/19] Revert "Use native `AddIncludeFile` method" This reverts commit 0e0824a9f0fb10192d389599a772dfc60e4c5d26. --- cc/lib/TableGen.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/cc/lib/TableGen.cpp b/cc/lib/TableGen.cpp index f14f8a8..b2ba602 100644 --- a/cc/lib/TableGen.cpp +++ b/cc/lib/TableGen.cpp @@ -12,7 +12,6 @@ #include "TableGen.h" #include "Types.h" #include -#include using ctablegen::RecordMap; using ctablegen::tableGenFromRecType; @@ -44,9 +43,16 @@ bool ctablegen::TableGenParser::addSource(const char *source) { return true; } -bool ctablegen::TableGenParser::addSourceFile(const StringRef path) { - std::string full_path = ""; - return !sourceMgr.AddIncludeFile(std::string(path), SMLoc(), full_path); +bool ctablegen::TableGenParser::addSourceFile(const StringRef source) { + ErrorOr> FileOrErr = + MemoryBuffer::getFile(source); + + if (std::error_code EC = FileOrErr.getError()) { + return false; + } + + sourceMgr.AddNewSourceBuffer(std::move(*FileOrErr), SMLoc()); + return true; } TableGenParserRef tableGenGet() { From 6d005350035140d96f121b41d02500dbb2f226bb Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Mon, 6 Jan 2025 22:24:28 +0900 Subject: [PATCH 04/19] Show error --- cc/lib/TableGen.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cc/lib/TableGen.cpp b/cc/lib/TableGen.cpp index b2ba602..6b6a8e5 100644 --- a/cc/lib/TableGen.cpp +++ b/cc/lib/TableGen.cpp @@ -12,6 +12,7 @@ #include "TableGen.h" #include "Types.h" #include +#include using ctablegen::RecordMap; using ctablegen::tableGenFromRecType; @@ -48,6 +49,7 @@ bool ctablegen::TableGenParser::addSourceFile(const StringRef source) { MemoryBuffer::getFile(source); if (std::error_code EC = FileOrErr.getError()) { + std::cerr << "tablegen error: " << EC << "\n"; return false; } From a3ff5ccab468a95051e2bc42be38354197a7723e Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Mon, 6 Jan 2025 22:37:43 +0900 Subject: [PATCH 05/19] Revert "Show error" This reverts commit 6d005350035140d96f121b41d02500dbb2f226bb. --- cc/lib/TableGen.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/cc/lib/TableGen.cpp b/cc/lib/TableGen.cpp index 6b6a8e5..b2ba602 100644 --- a/cc/lib/TableGen.cpp +++ b/cc/lib/TableGen.cpp @@ -12,7 +12,6 @@ #include "TableGen.h" #include "Types.h" #include -#include using ctablegen::RecordMap; using ctablegen::tableGenFromRecType; @@ -49,7 +48,6 @@ bool ctablegen::TableGenParser::addSourceFile(const StringRef source) { MemoryBuffer::getFile(source); if (std::error_code EC = FileOrErr.getError()) { - std::cerr << "tablegen error: " << EC << "\n"; return false; } From 853e3e7d837a64591d6f5ed4e8a088aa87b31ddc Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Mon, 6 Jan 2025 22:37:48 +0900 Subject: [PATCH 06/19] Reapply "Use native `AddIncludeFile` method" This reverts commit 2044c7b96b1a7f0c0dd91eb1af889ea06d047655. --- cc/lib/TableGen.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/cc/lib/TableGen.cpp b/cc/lib/TableGen.cpp index b2ba602..f14f8a8 100644 --- a/cc/lib/TableGen.cpp +++ b/cc/lib/TableGen.cpp @@ -12,6 +12,7 @@ #include "TableGen.h" #include "Types.h" #include +#include using ctablegen::RecordMap; using ctablegen::tableGenFromRecType; @@ -43,16 +44,9 @@ bool ctablegen::TableGenParser::addSource(const char *source) { return true; } -bool ctablegen::TableGenParser::addSourceFile(const StringRef source) { - ErrorOr> FileOrErr = - MemoryBuffer::getFile(source); - - if (std::error_code EC = FileOrErr.getError()) { - return false; - } - - sourceMgr.AddNewSourceBuffer(std::move(*FileOrErr), SMLoc()); - return true; +bool ctablegen::TableGenParser::addSourceFile(const StringRef path) { + std::string full_path = ""; + return !sourceMgr.AddIncludeFile(std::string(path), SMLoc(), full_path); } TableGenParserRef tableGenGet() { From 1e5d0f367b2142521f1f0537e782a207c14c042f Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Mon, 6 Jan 2025 23:01:51 +0900 Subject: [PATCH 07/19] Fix search and parse order --- cc/include/TableGen.h | 26 ++++++++++++++------------ cc/lib/TableGen.cpp | 23 +++++++++++++++-------- cc/lib/TableGen.hpp | 11 +++++++---- src/lib.rs | 11 ++++------- 4 files changed, 40 insertions(+), 31 deletions(-) diff --git a/cc/include/TableGen.h b/cc/include/TableGen.h index 86d1645..8c29b83 100644 --- a/cc/include/TableGen.h +++ b/cc/include/TableGen.h @@ -26,10 +26,10 @@ extern "C" { #endif typedef enum { - TABLEGEN_DK_ERROR, - TABLEGEN_DK_WARNING, - TABLEGEN_DK_REMARK, - TABLEGEN_DK_NOTE, + TABLEGEN_DK_ERROR, + TABLEGEN_DK_WARNING, + TABLEGEN_DK_REMARK, + TABLEGEN_DK_NOTE, } TableGenDiagKind; typedef enum { @@ -54,8 +54,7 @@ typedef void (*TableGenStringCallback)(TableGenStringRef, void *); TableGenParserRef tableGenGet(); void tableGenFree(TableGenParserRef tg_ref); TableGenBool tableGenAddSource(TableGenParserRef tg_ref, const char *source); -TableGenBool tableGenAddSourceFile(TableGenParserRef tg_ref, - TableGenStringRef source); +void tableGenAddSourceFile(TableGenParserRef tg_ref, TableGenStringRef source); void tableGenAddIncludePath(TableGenParserRef tg_ref, TableGenStringRef include); @@ -162,14 +161,17 @@ TableGenBool tableGenIntInitGetValue(TableGenTypedInitRef ti, int64_t *integer); TableGenStringRef tableGenStringInitGetValue(TableGenTypedInitRef ti); char *tableGenStringInitGetValueNewString(TableGenTypedInitRef ti); TableGenRecordRef tableGenDefInitGetValue(TableGenTypedInitRef ti); -void tableGenInitPrint(TableGenTypedInitRef ti, - TableGenStringCallback callback, void *userData); +void tableGenInitPrint(TableGenTypedInitRef ti, TableGenStringCallback callback, + void *userData); void tableGenInitDump(TableGenTypedInitRef ti); -TableGenBool tableGenPrintError(TableGenParserRef ref, TableGenSourceLocationRef loc_ref, TableGenDiagKind dk, - TableGenStringRef message, - TableGenStringCallback callback, void *userData); +TableGenBool tableGenPrintError(TableGenParserRef ref, + TableGenSourceLocationRef loc_ref, + TableGenDiagKind dk, TableGenStringRef message, + TableGenStringCallback callback, + void *userData); TableGenSourceLocationRef tableGenSourceLocationNull(); -TableGenSourceLocationRef tableGenSourceLocationClone(TableGenSourceLocationRef loc_ref); +TableGenSourceLocationRef +tableGenSourceLocationClone(TableGenSourceLocationRef loc_ref); // Memory void tableGenSourceLocationFree(TableGenSourceLocationRef loc_ref); diff --git a/cc/lib/TableGen.cpp b/cc/lib/TableGen.cpp index f14f8a8..5e8501c 100644 --- a/cc/lib/TableGen.cpp +++ b/cc/lib/TableGen.cpp @@ -12,7 +12,7 @@ #include "TableGen.h" #include "Types.h" #include -#include +#include using ctablegen::RecordMap; using ctablegen::tableGenFromRecType; @@ -20,6 +20,14 @@ using ctablegen::tableGenFromRecType; RecordKeeper *ctablegen::TableGenParser::parse() { auto recordKeeper = new RecordKeeper; sourceMgr.setIncludeDirs(includeDirs); + + for (const auto &file : files) { + std::string full_path; + if (!sourceMgr.AddIncludeFile(std::string(file), SMLoc(), full_path)) { + return nullptr; + } + } + bool result = TableGenParseFile(sourceMgr, *recordKeeper); if (!result) { return recordKeeper; @@ -28,7 +36,7 @@ RecordKeeper *ctablegen::TableGenParser::parse() { return nullptr; } -void ctablegen::TableGenParser::addIncludePath(const StringRef include) { +void ctablegen::TableGenParser::addIncludeDirectory(const StringRef include) { includeDirs.push_back(std::string(include)); } @@ -44,9 +52,8 @@ bool ctablegen::TableGenParser::addSource(const char *source) { return true; } -bool ctablegen::TableGenParser::addSourceFile(const StringRef path) { - std::string full_path = ""; - return !sourceMgr.AddIncludeFile(std::string(path), SMLoc(), full_path); +void ctablegen::TableGenParser::addSourceFile(const StringRef file) { + files.push_back(std::string(file)); } TableGenParserRef tableGenGet() { @@ -55,8 +62,7 @@ TableGenParserRef tableGenGet() { void tableGenFree(TableGenParserRef tg_ref) { delete unwrap(tg_ref); } -TableGenBool tableGenAddSourceFile(TableGenParserRef tg_ref, - TableGenStringRef source) { +void tableGenAddSourceFile(TableGenParserRef tg_ref, TableGenStringRef source) { return unwrap(tg_ref)->addSourceFile(StringRef(source.data, source.len)); } @@ -66,7 +72,8 @@ TableGenBool tableGenAddSource(TableGenParserRef tg_ref, const char *source) { void tableGenAddIncludePath(TableGenParserRef tg_ref, TableGenStringRef include) { - return unwrap(tg_ref)->addIncludePath(StringRef(include.data, include.len)); + return unwrap(tg_ref)->addIncludeDirectory( + StringRef(include.data, include.len)); } TableGenRecordKeeperRef tableGenParse(TableGenParserRef tg_ref) { diff --git a/cc/lib/TableGen.hpp b/cc/lib/TableGen.hpp index c628bc8..02622d8 100644 --- a/cc/lib/TableGen.hpp +++ b/cc/lib/TableGen.hpp @@ -38,13 +38,15 @@ class TableGenParser { public: TableGenParser() {} bool addSource(const char *source); - bool addSourceFile(const StringRef source); - void addIncludePath(const StringRef include); + void addSourceFile(const StringRef source); + void addIncludeDirectory(const StringRef include); RecordKeeper *parse(); SourceMgr sourceMgr; + private: std::vector includeDirs; + std::vector files; }; // Utility @@ -60,7 +62,7 @@ class CallbackOstream : public llvm::raw_ostream { opaqueData(opaqueData), pos(0u) {} void write_impl(const char *ptr, size_t size) override { - TableGenStringRef string = TableGenStringRef { .data = ptr, .len = size }; + TableGenStringRef string = TableGenStringRef{.data = ptr, .len = size}; callback(string, opaqueData); pos += size; } @@ -75,7 +77,8 @@ class CallbackOstream : public llvm::raw_ostream { } // namespace ctablegen -DEFINE_SIMPLE_CONVERSION_FUNCTIONS(ctablegen::TableGenParser, TableGenParserRef); +DEFINE_SIMPLE_CONVERSION_FUNCTIONS(ctablegen::TableGenParser, + TableGenParserRef); DEFINE_SIMPLE_CONVERSION_FUNCTIONS(RecordKeeper, TableGenRecordKeeperRef); DEFINE_SIMPLE_CONVERSION_FUNCTIONS(ctablegen::RecordMap, TableGenRecordMapRef); diff --git a/src/lib.rs b/src/lib.rs index f304347..42475f4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -79,7 +79,7 @@ //! //! # fn main() -> Result<(), Box> { //! let keeper: RecordKeeper = TableGenParser::new() -//! .add_source_file("mlir/IR/OpBase.td")? +//! .add_source_file("mlir/IR/OpBase.td") //! .add_include_path(&format!("{}/include", std::env::var("TABLEGEN_190_PREFIX")?)) //! .parse()?; //! let i32_def = keeper.def("I32").expect("has I32 def"); @@ -168,12 +168,9 @@ impl<'s> TableGenParser<'s> { } /// Reads TableGen source code from the file at the given path. - pub fn add_source_file(self, source: &str) -> Result { - if unsafe { tableGenAddSourceFile(self.raw, StringRef::from(source).to_raw()) > 0 } { - Ok(self) - } else { - Err(TableGenError::InvalidSource.into()) - } + pub fn add_source_file(self, source: &str) -> Self { + unsafe { tableGenAddSourceFile(self.raw, StringRef::from(source).to_raw()) } + self } /// Adds the given TableGen source string. From e2d9e6aaadc33bd2cddadf9be81104f11071639c Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Mon, 6 Jan 2025 23:09:27 +0900 Subject: [PATCH 08/19] Remove unused header --- cc/lib/TableGen.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/cc/lib/TableGen.cpp b/cc/lib/TableGen.cpp index 5e8501c..c85e8fd 100644 --- a/cc/lib/TableGen.cpp +++ b/cc/lib/TableGen.cpp @@ -12,7 +12,6 @@ #include "TableGen.h" #include "Types.h" #include -#include using ctablegen::RecordMap; using ctablegen::tableGenFromRecType; From 5f269c21749b6a85c1ed8caeff2f89fdd35b73bb Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Mon, 6 Jan 2025 23:10:13 +0900 Subject: [PATCH 09/19] Remove unnecessary wrapper --- cc/lib/TableGen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cc/lib/TableGen.cpp b/cc/lib/TableGen.cpp index c85e8fd..185c3d2 100644 --- a/cc/lib/TableGen.cpp +++ b/cc/lib/TableGen.cpp @@ -22,7 +22,7 @@ RecordKeeper *ctablegen::TableGenParser::parse() { for (const auto &file : files) { std::string full_path; - if (!sourceMgr.AddIncludeFile(std::string(file), SMLoc(), full_path)) { + if (!sourceMgr.AddIncludeFile(file, SMLoc(), full_path)) { return nullptr; } } From abf836f23d69556387c9fe62964283de3a0dc82a Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Mon, 6 Jan 2025 23:11:09 +0900 Subject: [PATCH 10/19] Remove unnecessary return --- cc/lib/TableGen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cc/lib/TableGen.cpp b/cc/lib/TableGen.cpp index 185c3d2..0ac437e 100644 --- a/cc/lib/TableGen.cpp +++ b/cc/lib/TableGen.cpp @@ -62,7 +62,7 @@ TableGenParserRef tableGenGet() { void tableGenFree(TableGenParserRef tg_ref) { delete unwrap(tg_ref); } void tableGenAddSourceFile(TableGenParserRef tg_ref, TableGenStringRef source) { - return unwrap(tg_ref)->addSourceFile(StringRef(source.data, source.len)); + unwrap(tg_ref)->addSourceFile(StringRef(source.data, source.len)); } TableGenBool tableGenAddSource(TableGenParserRef tg_ref, const char *source) { From d1253c46c377bd4759da82582364e02a50a9c82d Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Mon, 6 Jan 2025 23:11:55 +0900 Subject: [PATCH 11/19] Rename function --- cc/include/TableGen.h | 2 +- cc/lib/TableGen.cpp | 2 +- src/lib.rs | 10 +++++----- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cc/include/TableGen.h b/cc/include/TableGen.h index 8c29b83..d407824 100644 --- a/cc/include/TableGen.h +++ b/cc/include/TableGen.h @@ -55,7 +55,7 @@ TableGenParserRef tableGenGet(); void tableGenFree(TableGenParserRef tg_ref); TableGenBool tableGenAddSource(TableGenParserRef tg_ref, const char *source); void tableGenAddSourceFile(TableGenParserRef tg_ref, TableGenStringRef source); -void tableGenAddIncludePath(TableGenParserRef tg_ref, +void tableGenAddIncludeDirectory(TableGenParserRef tg_ref, TableGenStringRef include); /// NOTE: TableGen currently relies on global state within a given parser diff --git a/cc/lib/TableGen.cpp b/cc/lib/TableGen.cpp index 0ac437e..7d6308d 100644 --- a/cc/lib/TableGen.cpp +++ b/cc/lib/TableGen.cpp @@ -69,7 +69,7 @@ TableGenBool tableGenAddSource(TableGenParserRef tg_ref, const char *source) { return unwrap(tg_ref)->addSource(source); } -void tableGenAddIncludePath(TableGenParserRef tg_ref, +void tableGenAddIncludeDirectory(TableGenParserRef tg_ref, TableGenStringRef include) { return unwrap(tg_ref)->addIncludeDirectory( StringRef(include.data, include.len)); diff --git a/src/lib.rs b/src/lib.rs index 42475f4..1c0279d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -62,7 +62,7 @@ //! # fn main() -> Result<(), Box> { //! let keeper: RecordKeeper = TableGenParser::new() //! .add_source(r#"include "mlir/IR/OpBase.td""#)? -//! .add_include_path(&format!("{}/include", std::env::var("TABLEGEN_190_PREFIX")?)) +//! .add_include_directory(&format!("{}/include", std::env::var("TABLEGEN_190_PREFIX")?)) //! .parse()?; //! let i32_def = keeper.def("I32").expect("has I32 def"); //! assert!(i32_def.subclass_of("I")); @@ -80,7 +80,7 @@ //! # fn main() -> Result<(), Box> { //! let keeper: RecordKeeper = TableGenParser::new() //! .add_source_file("mlir/IR/OpBase.td") -//! .add_include_path(&format!("{}/include", std::env::var("TABLEGEN_190_PREFIX")?)) +//! .add_include_directory(&format!("{}/include", std::env::var("TABLEGEN_190_PREFIX")?)) //! .parse()?; //! let i32_def = keeper.def("I32").expect("has I32 def"); //! assert!(i32_def.subclass_of("I")); @@ -126,7 +126,7 @@ pub use record::RecordValue; pub use record_keeper::RecordKeeper; use raw::{ - tableGenAddIncludePath, tableGenAddSource, tableGenAddSourceFile, tableGenFree, tableGenGet, + tableGenAddIncludeDirectory, tableGenAddSource, tableGenAddSourceFile, tableGenFree, tableGenGet, tableGenParse, TableGenParserRef, }; use string_ref::StringRef; @@ -162,8 +162,8 @@ impl<'s> TableGenParser<'s> { } /// Adds the given path to the list of included directories. - pub fn add_include_path(self, include: &str) -> Self { - unsafe { tableGenAddIncludePath(self.raw, StringRef::from(include).to_raw()) } + pub fn add_include_directory(self, include: &str) -> Self { + unsafe { tableGenAddIncludeDirectory(self.raw, StringRef::from(include).to_raw()) } self } From fa5b3995ef0fe370c245be9e4013a50627ec4db8 Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Mon, 6 Jan 2025 23:13:22 +0900 Subject: [PATCH 12/19] Update documentation --- src/lib.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 1c0279d..1eb511e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -71,7 +71,7 @@ //! # } //! ``` //! -//! You can also pass an included file's path directly. +//! You can also pass an included filename directly. //! //! ```rust //! use tblgen_alt::{TableGenParser, RecordKeeper}; @@ -126,8 +126,8 @@ pub use record::RecordValue; pub use record_keeper::RecordKeeper; use raw::{ - tableGenAddIncludeDirectory, tableGenAddSource, tableGenAddSourceFile, tableGenFree, tableGenGet, - tableGenParse, TableGenParserRef, + tableGenAddIncludeDirectory, tableGenAddSource, tableGenAddSourceFile, tableGenFree, + tableGenGet, tableGenParse, TableGenParserRef, }; use string_ref::StringRef; From f5b256035cf5a214edb0d2e2a10cd37c0d6e4ef5 Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Tue, 7 Jan 2025 19:22:07 +0900 Subject: [PATCH 13/19] Fix library paths --- tools/setup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/setup.sh b/tools/setup.sh index 3e68f82..db74d0f 100755 --- a/tools/setup.sh +++ b/tools/setup.sh @@ -11,5 +11,5 @@ llvm_prefix=$(brew --prefix llvm@$llvm_version) echo TABLEGEN_190_PREFIX=$llvm_prefix >>$GITHUB_ENV echo PATH=$llvm_prefix/bin:$PATH >>$GITHUB_ENV -echo LIBRARY_PATH=$(brew --prefix)/lib:$LIBRARY_PATH >>$GITHUB_ENV -echo LD_LIBRARY_PATH=$(brew --prefix)/lib:$LD_LIBRARY_PATH >>$GITHUB_ENV +echo LIBRARY_PATH=$llvm_prefix/lib:$LIBRARY_PATH >>$GITHUB_ENV +echo LD_LIBRARY_PATH=$llvm_prefix/lib:$LD_LIBRARY_PATH >>$GITHUB_ENV From 46ac7f03c00d0838b6dad60a1d071846fce7d02f Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Tue, 7 Jan 2025 19:22:44 +0900 Subject: [PATCH 14/19] Revert "Fix library paths" This reverts commit f5b256035cf5a214edb0d2e2a10cd37c0d6e4ef5. --- tools/setup.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/setup.sh b/tools/setup.sh index db74d0f..3e68f82 100755 --- a/tools/setup.sh +++ b/tools/setup.sh @@ -11,5 +11,5 @@ llvm_prefix=$(brew --prefix llvm@$llvm_version) echo TABLEGEN_190_PREFIX=$llvm_prefix >>$GITHUB_ENV echo PATH=$llvm_prefix/bin:$PATH >>$GITHUB_ENV -echo LIBRARY_PATH=$llvm_prefix/lib:$LIBRARY_PATH >>$GITHUB_ENV -echo LD_LIBRARY_PATH=$llvm_prefix/lib:$LD_LIBRARY_PATH >>$GITHUB_ENV +echo LIBRARY_PATH=$(brew --prefix)/lib:$LIBRARY_PATH >>$GITHUB_ENV +echo LD_LIBRARY_PATH=$(brew --prefix)/lib:$LD_LIBRARY_PATH >>$GITHUB_ENV From 06a3a32017c93a3fa7b2a86d68dcb869f224a0af Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Tue, 7 Jan 2025 22:03:59 +0900 Subject: [PATCH 15/19] Fix build and linting (#19) This PR fixes build for Linux + Homebrew environment and lining for the new version of Rust. --- .github/workflows/test.yaml | 22 ++++++++++--- build.rs | 66 ++++++++++++++++++------------------- src/init.rs | 6 ++-- src/lib.rs | 4 +-- src/record.rs | 12 +++---- src/record_keeper.rs | 10 +++--- src/string_ref.rs | 2 +- tools/setup.sh | 4 +-- 8 files changed, 70 insertions(+), 56 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index b4258d8..8617490 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -5,6 +5,20 @@ on: - master pull_request: jobs: + build: + strategy: + fail-fast: false + matrix: + os: + - ubuntu-latest + - macos-latest + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: swatinem/rust-cache@v2 + - uses: homebrew/actions/setup-homebrew@master + - run: tools/setup.sh + - run: cargo build test: strategy: fail-fast: false @@ -15,16 +29,16 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - - uses: Swatinem/rust-cache@v2 - - uses: Homebrew/actions/setup-homebrew@master + - uses: swatinem/rust-cache@v2 + - uses: homebrew/actions/setup-homebrew@master - run: tools/setup.sh - run: cargo test lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: Swatinem/rust-cache@v2 - - uses: Homebrew/actions/setup-homebrew@master + - uses: swatinem/rust-cache@v2 + - uses: homebrew/actions/setup-homebrew@master - run: tools/setup.sh - run: cargo clippy -- -D warnings format: diff --git a/build.rs b/build.rs index ee4f3b1..bdf0cd5 100644 --- a/build.rs +++ b/build.rs @@ -1,6 +1,8 @@ use std::{ env, error::Error, + ffi::OsStr, + fs::read_dir, path::Path, process::{exit, Command}, str, @@ -18,7 +20,7 @@ const LLVM_MAJOR_VERSION: usize = if cfg!(feature = "llvm16-0") { fn main() { if let Err(error) = run() { - eprintln!("{}", error); + eprintln!("{error}"); exit(1); } } @@ -26,10 +28,9 @@ fn main() { fn run() -> Result<(), Box> { let version = llvm_config("--version")?; - if !version.starts_with(&format!("{}.", LLVM_MAJOR_VERSION)) { + if !version.starts_with(&format!("{LLVM_MAJOR_VERSION}.")) { return Err(format!( - "failed to find correct version ({}.x.x) of llvm-config (found {})", - LLVM_MAJOR_VERSION, version + "failed to find correct version ({LLVM_MAJOR_VERSION}.x.x) of llvm-config (found {version})", ) .into()); } @@ -38,6 +39,8 @@ fn run() -> Result<(), Box> { println!("cargo:rerun-if-changed=cc"); println!("cargo:rustc-link-search={}", llvm_config("--libdir")?); + build_c_library()?; + for name in llvm_config("--libnames")?.trim().split(' ') { println!("cargo:rustc-link-lib=static={}", parse_library_name(name)?); } @@ -62,43 +65,41 @@ fn run() -> Result<(), Box> { } } - println!("cargo:rustc-link-lib=ffi"); - if let Some(name) = get_system_libcpp() { - println!("cargo:rustc-link-lib={}", name); + println!("cargo:rustc-link-lib={name}"); } - std::env::set_var("CXXFLAGS", llvm_config("--cxxflags")?); - std::env::set_var("CFLAGS", llvm_config("--cflags")?); - println!("cargo:rustc-link-search={}", &env::var("OUT_DIR")?); + bindgen::builder() + .header("wrapper.h") + .clang_arg("-Icc/include") + .clang_arg(format!("-I{}", llvm_config("--includedir")?)) + .default_enum_style(bindgen::EnumVariation::ModuleConsts) + .parse_callbacks(Box::new(bindgen::CargoCallbacks::new())) + .generate()? + .write_to_file(Path::new(&env::var("OUT_DIR")?).join("bindings.rs"))?; + + Ok(()) +} + +fn build_c_library() -> Result<(), Box> { + env::set_var("CXXFLAGS", llvm_config("--cxxflags")?); + env::set_var("CFLAGS", llvm_config("--cflags")?); cc::Build::new() + .cpp(true) .files( - std::fs::read_dir("cc/lib")? - .filter(|r| r.is_ok()) - .map(|r| r.unwrap().path()) - .filter(|r| r.is_file() && r.extension().unwrap() == "cpp"), + read_dir("cc/lib")? + .collect::, _>>()? + .into_iter() + .map(|entry| entry.path()) + .filter(|path| path.is_file() && path.extension() == Some(OsStr::new("cpp"))), ) - .cpp(true) .include("cc/include") .include(llvm_config("--includedir")?) - .flag(&llvm_config("--cxxflags")?) - .flag("-Wno-unused-parameter") + .flag("-Werror") .std("c++17") .compile("CTableGen"); - println!("cargo:rustc-link-lib=static=CTableGen"); - - bindgen::builder() - .header("wrapper.h") - .clang_arg("-Icc/include") - .clang_arg(format!("-I{}", llvm_config("--includedir")?)) - .default_enum_style(bindgen::EnumVariation::ModuleConsts) - .parse_callbacks(Box::new(bindgen::CargoCallbacks::new())) - .generate() - .unwrap() - .write_to_file(Path::new(&env::var("OUT_DIR")?).join("bindings.rs"))?; - Ok(()) } @@ -117,9 +118,8 @@ fn llvm_config(argument: &str) -> Result> { .map(|path| Path::new(&path).join("bin")) .unwrap_or_default(); let call = format!( - "{} --link-static {}", - prefix.join("llvm-config").display(), - argument + "{} --link-static {argument}", + prefix.join("llvm-config").display() ); Ok(str::from_utf8( @@ -137,5 +137,5 @@ fn llvm_config(argument: &str) -> Result> { fn parse_library_name(name: &str) -> Result<&str, String> { name.strip_prefix("lib") .and_then(|name| name.split('.').next()) - .ok_or_else(|| format!("failed to parse library name: {}", name)) + .ok_or_else(|| format!("failed to parse library name: {name}")) } diff --git a/src/init.rs b/src/init.rs index 6400919..d6981db 100644 --- a/src/init.rs +++ b/src/init.rs @@ -51,7 +51,7 @@ pub enum TypedInit<'a> { Invalid, } -impl<'a> TypedInit<'a> { +impl TypedInit<'_> { fn variant_name(&self) -> &'static str { match self { TypedInit::Bit(_) => "Bit", @@ -67,7 +67,7 @@ impl<'a> TypedInit<'a> { } } -impl<'a> Display for TypedInit<'a> { +impl Display for TypedInit<'_> { fn fmt(&self, f: &mut Formatter) -> fmt::Result { match self { Self::Bit(init) => write!(f, "{}", &init), @@ -83,7 +83,7 @@ impl<'a> Display for TypedInit<'a> { } } -impl<'a> Debug for TypedInit<'a> { +impl Debug for TypedInit<'_> { fn fmt(&self, f: &mut Formatter) -> fmt::Result { write!(f, "TypedInit(")?; let name = self.variant_name(); diff --git a/src/lib.rs b/src/lib.rs index 1eb511e..c929c9a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -145,7 +145,7 @@ pub struct TableGenParser<'s> { _source_ref: PhantomData<&'s str>, } -impl<'s> Default for TableGenParser<'s> { +impl Default for TableGenParser<'_> { fn default() -> Self { Self::new() } @@ -227,7 +227,7 @@ impl<'s> TableGenParser<'s> { } } -impl<'s> Drop for TableGenParser<'s> { +impl Drop for TableGenParser<'_> { fn drop(&mut self) { unsafe { tableGenFree(self.raw); diff --git a/src/record.rs b/src/record.rs index 90fcee5..f1ce8b5 100644 --- a/src/record.rs +++ b/src/record.rs @@ -37,7 +37,7 @@ pub struct Record<'a> { _reference: PhantomData<&'a TableGenRecordRef>, } -impl<'a> Display for Record<'a> { +impl Display for Record<'_> { fn fmt(&self, formatter: &mut Formatter) -> fmt::Result { let mut data = (formatter, Ok(())); @@ -53,7 +53,7 @@ impl<'a> Display for Record<'a> { } } -impl<'a> Debug for Record<'a> { +impl Debug for Record<'_> { fn fmt(&self, formatter: &mut Formatter) -> fmt::Result { writeln!(formatter, "Record(")?; Display::fmt(self, formatter)?; @@ -191,7 +191,7 @@ impl<'a> Record<'a> { } } -impl<'a> SourceLoc for Record<'a> { +impl SourceLoc for Record<'_> { fn source_location(self) -> SourceLocation { unsafe { SourceLocation::from_raw(tableGenRecordGetLoc(self.raw)) } } @@ -236,7 +236,7 @@ pub struct RecordValue<'a> { _reference: PhantomData<&'a TableGenRecordRef>, } -impl<'a> Display for RecordValue<'a> { +impl Display for RecordValue<'_> { fn fmt(&self, formatter: &mut Formatter) -> fmt::Result { let mut data = (formatter, Ok(())); @@ -252,7 +252,7 @@ impl<'a> Display for RecordValue<'a> { } } -impl<'a> RecordValue<'a> { +impl RecordValue<'_> { /// Creates a record from a raw object. /// /// # Safety @@ -270,7 +270,7 @@ impl<'a> RecordValue<'a> { } } -impl<'a> SourceLoc for RecordValue<'a> { +impl SourceLoc for RecordValue<'_> { fn source_location(self) -> SourceLocation { unsafe { SourceLocation::from_raw(tableGenRecordValGetLoc(self.raw)) } } diff --git a/src/record_keeper.rs b/src/record_keeper.rs index 5f0e932..7bd05ab 100644 --- a/src/record_keeper.rs +++ b/src/record_keeper.rs @@ -96,7 +96,7 @@ impl<'s> RecordKeeper<'s> { } } -impl<'s> Drop for RecordKeeper<'s> { +impl Drop for RecordKeeper<'_> { fn drop(&mut self) { unsafe { tableGenRecordKeeperFree(self.raw); @@ -131,7 +131,7 @@ pub struct NamedRecordIter<'a, T> { _kind: PhantomData<&'a T>, } -impl<'a, T> NamedRecordIter<'a, T> { +impl NamedRecordIter<'_, T> { unsafe fn from_raw(raw: TableGenRecordKeeperIteratorRef) -> Self { NamedRecordIter { raw, @@ -159,13 +159,13 @@ impl<'a, T: NextRecord> Iterator for NamedRecordIter<'a, T> { } } -impl<'a, T> Clone for NamedRecordIter<'a, T> { +impl Clone for NamedRecordIter<'_, T> { fn clone(&self) -> Self { unsafe { Self::from_raw(tableGenRecordKeeperIteratorClone(self.raw)) } } } -impl<'a, T> Drop for NamedRecordIter<'a, T> { +impl Drop for NamedRecordIter<'_, T> { fn drop(&mut self) { unsafe { tableGenRecordKeeperIteratorFree(self.raw) } } @@ -201,7 +201,7 @@ impl<'a> Iterator for RecordIter<'a> { } } -impl<'a> Drop for RecordIter<'a> { +impl Drop for RecordIter<'_> { fn drop(&mut self) { unsafe { tableGenRecordVectorFree(self.raw) } } diff --git a/src/string_ref.rs b/src/string_ref.rs index 1cb1a53..ce0277b 100644 --- a/src/string_ref.rs +++ b/src/string_ref.rs @@ -8,7 +8,7 @@ pub struct StringRef<'a> { _reference: PhantomData<&'a TableGenStringRef>, } -impl<'a> StringRef<'a> { +impl StringRef<'_> { pub unsafe fn to_raw(self) -> TableGenStringRef { self.raw } diff --git a/tools/setup.sh b/tools/setup.sh index 3e68f82..db74d0f 100755 --- a/tools/setup.sh +++ b/tools/setup.sh @@ -11,5 +11,5 @@ llvm_prefix=$(brew --prefix llvm@$llvm_version) echo TABLEGEN_190_PREFIX=$llvm_prefix >>$GITHUB_ENV echo PATH=$llvm_prefix/bin:$PATH >>$GITHUB_ENV -echo LIBRARY_PATH=$(brew --prefix)/lib:$LIBRARY_PATH >>$GITHUB_ENV -echo LD_LIBRARY_PATH=$(brew --prefix)/lib:$LD_LIBRARY_PATH >>$GITHUB_ENV +echo LIBRARY_PATH=$llvm_prefix/lib:$LIBRARY_PATH >>$GITHUB_ENV +echo LD_LIBRARY_PATH=$llvm_prefix/lib:$LD_LIBRARY_PATH >>$GITHUB_ENV From 927435bc0be0b8d6694032fb2b37fe8369e15dc9 Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Wed, 8 Jan 2025 18:35:05 +0900 Subject: [PATCH 16/19] Run clang-format --- .github/workflows/test.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 8617490..d64a5e9 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -46,3 +46,4 @@ jobs: steps: - uses: actions/checkout@v4 - run: cargo fmt --check + - run: clang-format --dry-run -Werror wrapper.h $(git ls-files cc) From c365108d56d0ab749686690a24d6422821cdbdb1 Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Wed, 8 Jan 2025 18:35:25 +0900 Subject: [PATCH 17/19] Apply clang-format --- cc/include/TableGen.h | 2 +- cc/lib/RecordVal.cpp | 6 +++--- cc/lib/TableGen.cpp | 2 +- cc/lib/Utility.cpp | 11 +++++++---- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/cc/include/TableGen.h b/cc/include/TableGen.h index d407824..bac15df 100644 --- a/cc/include/TableGen.h +++ b/cc/include/TableGen.h @@ -56,7 +56,7 @@ void tableGenFree(TableGenParserRef tg_ref); TableGenBool tableGenAddSource(TableGenParserRef tg_ref, const char *source); void tableGenAddSourceFile(TableGenParserRef tg_ref, TableGenStringRef source); void tableGenAddIncludeDirectory(TableGenParserRef tg_ref, - TableGenStringRef include); + TableGenStringRef include); /// NOTE: TableGen currently relies on global state within a given parser /// invocation, so this function is not thread-safe. diff --git a/cc/lib/RecordVal.cpp b/cc/lib/RecordVal.cpp index 8f7ebd2..6aad730 100644 --- a/cc/lib/RecordVal.cpp +++ b/cc/lib/RecordVal.cpp @@ -14,7 +14,7 @@ TableGenStringRef tableGenRecordValGetName(TableGenRecordValRef rv_ref) { auto s = unwrap(rv_ref)->getName(); - return TableGenStringRef { .data = s.data(), .len = s.size() }; + return TableGenStringRef{.data = s.data(), .len = s.size()}; } TableGenTypedInitRef tableGenRecordValGetNameInit(TableGenRecordValRef rv_ref) { @@ -58,8 +58,8 @@ tableGenRecordValGetValAsDefRecord(TableGenRecordValRef rv_ref) { wrap(dyn_cast(unwrap(rv_ref)->getValue()))); } -void tableGenRecordValPrint(TableGenRecordValRef rv_ref, TableGenStringCallback callback, - void *userData) { +void tableGenRecordValPrint(TableGenRecordValRef rv_ref, + TableGenStringCallback callback, void *userData) { ctablegen::CallbackOstream stream(callback, userData); stream << *unwrap(rv_ref); } diff --git a/cc/lib/TableGen.cpp b/cc/lib/TableGen.cpp index 7d6308d..537aa1d 100644 --- a/cc/lib/TableGen.cpp +++ b/cc/lib/TableGen.cpp @@ -70,7 +70,7 @@ TableGenBool tableGenAddSource(TableGenParserRef tg_ref, const char *source) { } void tableGenAddIncludeDirectory(TableGenParserRef tg_ref, - TableGenStringRef include) { + TableGenStringRef include) { return unwrap(tg_ref)->addIncludeDirectory( StringRef(include.data, include.len)); } diff --git a/cc/lib/Utility.cpp b/cc/lib/Utility.cpp index 2cb5945..cea99cc 100644 --- a/cc/lib/Utility.cpp +++ b/cc/lib/Utility.cpp @@ -151,9 +151,11 @@ void tableGenInitPrint(TableGenTypedInitRef ti, TableGenStringCallback callback, void tableGenInitDump(TableGenTypedInitRef ti) { unwrap(ti)->dump(); } -TableGenBool tableGenPrintError(TableGenParserRef ref, TableGenSourceLocationRef loc_ref, TableGenDiagKind dk, - TableGenStringRef message, - TableGenStringCallback callback, void *userData) { +TableGenBool tableGenPrintError(TableGenParserRef ref, + TableGenSourceLocationRef loc_ref, + TableGenDiagKind dk, TableGenStringRef message, + TableGenStringCallback callback, + void *userData) { ctablegen::CallbackOstream stream(callback, userData); ArrayRef Loc = *unwrap(loc_ref); @@ -182,7 +184,8 @@ TableGenSourceLocationRef tableGenSourceLocationNull() { return wrap(new ArrayRef(SMLoc())); } -TableGenSourceLocationRef tableGenSourceLocationClone(TableGenSourceLocationRef loc_ref) { +TableGenSourceLocationRef +tableGenSourceLocationClone(TableGenSourceLocationRef loc_ref) { return wrap(new ArrayRef(*unwrap(loc_ref))); } From b0b05f109a58998a4850064abe90a808ffe711b8 Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Wed, 8 Jan 2025 18:37:23 +0900 Subject: [PATCH 18/19] Revert "Apply clang-format" This reverts commit c365108d56d0ab749686690a24d6422821cdbdb1. --- cc/include/TableGen.h | 2 +- cc/lib/RecordVal.cpp | 6 +++--- cc/lib/TableGen.cpp | 2 +- cc/lib/Utility.cpp | 11 ++++------- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/cc/include/TableGen.h b/cc/include/TableGen.h index bac15df..d407824 100644 --- a/cc/include/TableGen.h +++ b/cc/include/TableGen.h @@ -56,7 +56,7 @@ void tableGenFree(TableGenParserRef tg_ref); TableGenBool tableGenAddSource(TableGenParserRef tg_ref, const char *source); void tableGenAddSourceFile(TableGenParserRef tg_ref, TableGenStringRef source); void tableGenAddIncludeDirectory(TableGenParserRef tg_ref, - TableGenStringRef include); + TableGenStringRef include); /// NOTE: TableGen currently relies on global state within a given parser /// invocation, so this function is not thread-safe. diff --git a/cc/lib/RecordVal.cpp b/cc/lib/RecordVal.cpp index 6aad730..8f7ebd2 100644 --- a/cc/lib/RecordVal.cpp +++ b/cc/lib/RecordVal.cpp @@ -14,7 +14,7 @@ TableGenStringRef tableGenRecordValGetName(TableGenRecordValRef rv_ref) { auto s = unwrap(rv_ref)->getName(); - return TableGenStringRef{.data = s.data(), .len = s.size()}; + return TableGenStringRef { .data = s.data(), .len = s.size() }; } TableGenTypedInitRef tableGenRecordValGetNameInit(TableGenRecordValRef rv_ref) { @@ -58,8 +58,8 @@ tableGenRecordValGetValAsDefRecord(TableGenRecordValRef rv_ref) { wrap(dyn_cast(unwrap(rv_ref)->getValue()))); } -void tableGenRecordValPrint(TableGenRecordValRef rv_ref, - TableGenStringCallback callback, void *userData) { +void tableGenRecordValPrint(TableGenRecordValRef rv_ref, TableGenStringCallback callback, + void *userData) { ctablegen::CallbackOstream stream(callback, userData); stream << *unwrap(rv_ref); } diff --git a/cc/lib/TableGen.cpp b/cc/lib/TableGen.cpp index 537aa1d..7d6308d 100644 --- a/cc/lib/TableGen.cpp +++ b/cc/lib/TableGen.cpp @@ -70,7 +70,7 @@ TableGenBool tableGenAddSource(TableGenParserRef tg_ref, const char *source) { } void tableGenAddIncludeDirectory(TableGenParserRef tg_ref, - TableGenStringRef include) { + TableGenStringRef include) { return unwrap(tg_ref)->addIncludeDirectory( StringRef(include.data, include.len)); } diff --git a/cc/lib/Utility.cpp b/cc/lib/Utility.cpp index cea99cc..2cb5945 100644 --- a/cc/lib/Utility.cpp +++ b/cc/lib/Utility.cpp @@ -151,11 +151,9 @@ void tableGenInitPrint(TableGenTypedInitRef ti, TableGenStringCallback callback, void tableGenInitDump(TableGenTypedInitRef ti) { unwrap(ti)->dump(); } -TableGenBool tableGenPrintError(TableGenParserRef ref, - TableGenSourceLocationRef loc_ref, - TableGenDiagKind dk, TableGenStringRef message, - TableGenStringCallback callback, - void *userData) { +TableGenBool tableGenPrintError(TableGenParserRef ref, TableGenSourceLocationRef loc_ref, TableGenDiagKind dk, + TableGenStringRef message, + TableGenStringCallback callback, void *userData) { ctablegen::CallbackOstream stream(callback, userData); ArrayRef Loc = *unwrap(loc_ref); @@ -184,8 +182,7 @@ TableGenSourceLocationRef tableGenSourceLocationNull() { return wrap(new ArrayRef(SMLoc())); } -TableGenSourceLocationRef -tableGenSourceLocationClone(TableGenSourceLocationRef loc_ref) { +TableGenSourceLocationRef tableGenSourceLocationClone(TableGenSourceLocationRef loc_ref) { return wrap(new ArrayRef(*unwrap(loc_ref))); } From 7cf45dea04dd19d04f4ea6b6b491073bf5dc6e0a Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Wed, 8 Jan 2025 18:38:24 +0900 Subject: [PATCH 19/19] Format files --- cc/include/TableGen.h | 2 +- cc/lib/RecordVal.cpp | 6 +++--- cc/lib/TableGen.cpp | 2 +- cc/lib/Utility.cpp | 11 +++++++---- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/cc/include/TableGen.h b/cc/include/TableGen.h index d407824..bac15df 100644 --- a/cc/include/TableGen.h +++ b/cc/include/TableGen.h @@ -56,7 +56,7 @@ void tableGenFree(TableGenParserRef tg_ref); TableGenBool tableGenAddSource(TableGenParserRef tg_ref, const char *source); void tableGenAddSourceFile(TableGenParserRef tg_ref, TableGenStringRef source); void tableGenAddIncludeDirectory(TableGenParserRef tg_ref, - TableGenStringRef include); + TableGenStringRef include); /// NOTE: TableGen currently relies on global state within a given parser /// invocation, so this function is not thread-safe. diff --git a/cc/lib/RecordVal.cpp b/cc/lib/RecordVal.cpp index 8f7ebd2..6aad730 100644 --- a/cc/lib/RecordVal.cpp +++ b/cc/lib/RecordVal.cpp @@ -14,7 +14,7 @@ TableGenStringRef tableGenRecordValGetName(TableGenRecordValRef rv_ref) { auto s = unwrap(rv_ref)->getName(); - return TableGenStringRef { .data = s.data(), .len = s.size() }; + return TableGenStringRef{.data = s.data(), .len = s.size()}; } TableGenTypedInitRef tableGenRecordValGetNameInit(TableGenRecordValRef rv_ref) { @@ -58,8 +58,8 @@ tableGenRecordValGetValAsDefRecord(TableGenRecordValRef rv_ref) { wrap(dyn_cast(unwrap(rv_ref)->getValue()))); } -void tableGenRecordValPrint(TableGenRecordValRef rv_ref, TableGenStringCallback callback, - void *userData) { +void tableGenRecordValPrint(TableGenRecordValRef rv_ref, + TableGenStringCallback callback, void *userData) { ctablegen::CallbackOstream stream(callback, userData); stream << *unwrap(rv_ref); } diff --git a/cc/lib/TableGen.cpp b/cc/lib/TableGen.cpp index 7d6308d..537aa1d 100644 --- a/cc/lib/TableGen.cpp +++ b/cc/lib/TableGen.cpp @@ -70,7 +70,7 @@ TableGenBool tableGenAddSource(TableGenParserRef tg_ref, const char *source) { } void tableGenAddIncludeDirectory(TableGenParserRef tg_ref, - TableGenStringRef include) { + TableGenStringRef include) { return unwrap(tg_ref)->addIncludeDirectory( StringRef(include.data, include.len)); } diff --git a/cc/lib/Utility.cpp b/cc/lib/Utility.cpp index 2cb5945..cea99cc 100644 --- a/cc/lib/Utility.cpp +++ b/cc/lib/Utility.cpp @@ -151,9 +151,11 @@ void tableGenInitPrint(TableGenTypedInitRef ti, TableGenStringCallback callback, void tableGenInitDump(TableGenTypedInitRef ti) { unwrap(ti)->dump(); } -TableGenBool tableGenPrintError(TableGenParserRef ref, TableGenSourceLocationRef loc_ref, TableGenDiagKind dk, - TableGenStringRef message, - TableGenStringCallback callback, void *userData) { +TableGenBool tableGenPrintError(TableGenParserRef ref, + TableGenSourceLocationRef loc_ref, + TableGenDiagKind dk, TableGenStringRef message, + TableGenStringCallback callback, + void *userData) { ctablegen::CallbackOstream stream(callback, userData); ArrayRef Loc = *unwrap(loc_ref); @@ -182,7 +184,8 @@ TableGenSourceLocationRef tableGenSourceLocationNull() { return wrap(new ArrayRef(SMLoc())); } -TableGenSourceLocationRef tableGenSourceLocationClone(TableGenSourceLocationRef loc_ref) { +TableGenSourceLocationRef +tableGenSourceLocationClone(TableGenSourceLocationRef loc_ref) { return wrap(new ArrayRef(*unwrap(loc_ref))); }