mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-10-18 11:10:05 +00:00
Simplify invocation of snprintf (#4815)
This commit is contained in:
parent
fad68a7551
commit
8f7f5024f8
@ -15,6 +15,7 @@
|
||||
#ifndef SOURCE_OPT_SCALAR_REPLACEMENT_PASS_H_
|
||||
#define SOURCE_OPT_SCALAR_REPLACEMENT_PASS_H_
|
||||
|
||||
#include <cassert>
|
||||
#include <cstdio>
|
||||
#include <memory>
|
||||
#include <queue>
|
||||
@ -37,11 +38,10 @@ class ScalarReplacementPass : public MemPass {
|
||||
public:
|
||||
ScalarReplacementPass(uint32_t limit = kDefaultLimit)
|
||||
: max_num_elements_(limit) {
|
||||
name_[0] = '\0';
|
||||
strcat(name_, "scalar-replacement=");
|
||||
const size_t name_len = strlen(name_);
|
||||
snprintf(&name_[name_len], sizeof(name_) - name_len, "%d",
|
||||
max_num_elements_);
|
||||
const auto num_to_write = snprintf(
|
||||
name_, sizeof(name_), "scalar-replacement=%u", max_num_elements_);
|
||||
assert(size_t(num_to_write) < sizeof(name_));
|
||||
(void)num_to_write; // Mark as unused
|
||||
}
|
||||
|
||||
const char* name() const override { return name_; }
|
||||
@ -255,7 +255,10 @@ class ScalarReplacementPass : public MemPass {
|
||||
// Limit on the number of members in an object that will be replaced.
|
||||
// 0 means there is no limit.
|
||||
uint32_t max_num_elements_;
|
||||
char name_[55];
|
||||
// This has to be big enough to fit "scalar-replacement=" followed by a
|
||||
// uint32_t number written in decimal (so 10 digits), and then a
|
||||
// terminating nul.
|
||||
char name_[30];
|
||||
};
|
||||
|
||||
} // namespace opt
|
||||
|
@ -12,6 +12,8 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
#include "source/opt/scalar_replacement_pass.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "gmock/gmock.h"
|
||||
@ -23,6 +25,18 @@ namespace spvtools {
|
||||
namespace opt {
|
||||
namespace {
|
||||
|
||||
using ScalarReplacementPassName = ::testing::Test;
|
||||
|
||||
TEST_F(ScalarReplacementPassName, Default) {
|
||||
auto srp = ScalarReplacementPass();
|
||||
EXPECT_STREQ(srp.name(), "scalar-replacement=100");
|
||||
}
|
||||
|
||||
TEST_F(ScalarReplacementPassName, Large) {
|
||||
auto srp = ScalarReplacementPass(0xffffffffu);
|
||||
EXPECT_STREQ(srp.name(), "scalar-replacement=4294967295");
|
||||
}
|
||||
|
||||
using ScalarReplacementTest = PassTest<::testing::Test>;
|
||||
|
||||
TEST_F(ScalarReplacementTest, SimpleStruct) {
|
||||
|
Loading…
Reference in New Issue
Block a user