[clang] C89 doesn't have `math.h` functions (PR #129979)
Vinay Deshmukh via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 5 19:15:03 PST 2025
https://github.com/vinay-deshmukh created https://github.com/llvm/llvm-project/pull/129979
Fixes #15522
>From e9c7869550d9fd1eba4d4d42ee644540e6b6d445 Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <32487576+vinay-deshmukh at users.noreply.github.com>
Date: Tue, 4 Mar 2025 22:30:34 -0500
Subject: [PATCH 1/3] add failing test
---
clang/test/C/drs/c89_with_c99_functions.c | 7 +++++++
1 file changed, 7 insertions(+)
create mode 100644 clang/test/C/drs/c89_with_c99_functions.c
diff --git a/clang/test/C/drs/c89_with_c99_functions.c b/clang/test/C/drs/c89_with_c99_functions.c
new file mode 100644
index 0000000000000..d848727001562
--- /dev/null
+++ b/clang/test/C/drs/c89_with_c99_functions.c
@@ -0,0 +1,7 @@
+// RUN: %clang_cc1 -std=c89 -verify %s
+
+// From: https://github.com/llvm/llvm-project/issues/15522#issue-1071059939
+int logf = 5;
+int main() {
+return logf;
+}
>From 966aa6a735722063d7ea9727e36136f4f39c3d88 Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <32487576+vinay-deshmukh at users.noreply.github.com>
Date: Wed, 5 Mar 2025 22:09:02 -0500
Subject: [PATCH 2/3] Update test to `expect-no-diagnostics`
---
clang/test/C/drs/c89_with_c99_functions.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/clang/test/C/drs/c89_with_c99_functions.c b/clang/test/C/drs/c89_with_c99_functions.c
index d848727001562..de525313fbba5 100644
--- a/clang/test/C/drs/c89_with_c99_functions.c
+++ b/clang/test/C/drs/c89_with_c99_functions.c
@@ -1,4 +1,5 @@
// RUN: %clang_cc1 -std=c89 -verify %s
+// expected-no-diagnostics
// From: https://github.com/llvm/llvm-project/issues/15522#issue-1071059939
int logf = 5;
>From 28c58718d76be9c62635cdeffebc9d812b192e50 Mon Sep 17 00:00:00 2001
From: Vinay Deshmukh <32487576+vinay-deshmukh at users.noreply.github.com>
Date: Wed, 5 Mar 2025 22:13:50 -0500
Subject: [PATCH 3/3] Add exclusion for C89 / math.h functions
---
clang/lib/Basic/Builtins.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Basic/Builtins.cpp b/clang/lib/Basic/Builtins.cpp
index e7829a461bbc5..cfcbefdce2a24 100644
--- a/clang/lib/Basic/Builtins.cpp
+++ b/clang/lib/Basic/Builtins.cpp
@@ -14,6 +14,7 @@
#include "BuiltinTargetFeatures.h"
#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/LangOptions.h"
+#include "clang/Basic/LangStandard.h"
#include "clang/Basic/TargetInfo.h"
#include "llvm/ADT/StringRef.h"
using namespace clang;
@@ -148,7 +149,7 @@ static bool builtinIsSupported(const llvm::StringTable &Strings,
if (!LangOpts.Coroutines && (BuiltinInfo.Langs & COR_LANG))
return false;
/* MathBuiltins Unsupported */
- if (LangOpts.NoMathBuiltin && BuiltinInfo.Header.ID == HeaderDesc::MATH_H)
+ if ((LangOpts.NoMathBuiltin || /*C89*/ LangOpts.LangStd == LangStandard::lang_c89)&& BuiltinInfo.Header.ID == HeaderDesc::MATH_H)
return false;
/* GnuMode Unsupported */
if (!LangOpts.GNUMode && (BuiltinInfo.Langs & GNU_LANG))
More information about the cfe-commits
mailing list