Introduce support for recognizing string literals as address constants. Make evaluate_string() unconditionally tag the *-preop wrapped symbol expression as being an address constant. Signed-off-by: Nicolai Stange <nicstange@xxxxxxxxx> --- evaluate.c | 1 + validation/constexpr-string.c | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 validation/constexpr-string.c diff --git a/evaluate.c b/evaluate.c index f31ba9c..7a4af39 100644 --- a/evaluate.c +++ b/evaluate.c @@ -108,6 +108,7 @@ static struct symbol *evaluate_string(struct expression *expr) addr->symbol = sym; addr->ctype = &lazy_ptr_ctype; + addr->constexpr_flags = CONSTEXPR_FLAG_ADDR_CONST; expr->type = EXPR_PREOP; expr->op = '*'; diff --git a/validation/constexpr-string.c b/validation/constexpr-string.c new file mode 100644 index 0000000..e641a83 --- /dev/null +++ b/validation/constexpr-string.c @@ -0,0 +1,9 @@ +static char *a = "foobar"; // OK + +/* + * check-name: string literal constness verification. + * check-command: sparse -Wconstexpr-not-const $file + * + * check-error-start + * check-error-end + */ -- 2.7.0 -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html