diff options
author | YingChi Long <me@inclyc.cn> | 2022-08-03 10:07:31 +0800 |
---|---|---|
committer | YingChi Long <me@inclyc.cn> | 2022-08-04 21:07:30 +0800 |
commit | f417583f319bd60d1e32cdf9d0242e42f86101bf (patch) | |
tree | 000ade2999b3011d8c60c2e608f04bd066f88926 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | |
parent | b8985ba0adb5fd881bb301fbc79370b86396e658 (diff) | |
download | llvm-f417583f319bd60d1e32cdf9d0242e42f86101bf.zip llvm-f417583f319bd60d1e32cdf9d0242e42f86101bf.tar.gz llvm-f417583f319bd60d1e32cdf9d0242e42f86101bf.tar.bz2 |
[clang] format string checking for conpile-time evaluated str literal
This patch enhances clang's ability to check compile-time determinable
string literals as format strings, and can give FixIt hints at literals
(unlike gcc). Issue https://github.com/llvm/llvm-project/issues/55805
mentiond two compile-time string cases. And this patch partially fixes
one.
```
constexpr const char* foo() {
return "%s %d";
}
int main() {
printf(foo(), "abc", "def");
return 0;
}
```
This patch enables clang check format string for this:
```
<source>:4:24: warning: format specifies type 'int' but the argument has type 'const char *' [-Wformat]
printf(foo(), "abc", "def");
~~~~~ ^~~~~
<source>:2:42: note: format string is defined here
constexpr const char *foo() { return "%s %d"; }
^~
%s
1 warning generated.
```
Reviewed By: aaron.ballman
Signed-off-by: YingChi Long <me@inclyc.cn>
Differential Revision: https://reviews.llvm.org/D130906
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
0 files changed, 0 insertions, 0 deletions