Skip to content

[clang-repl] Fix C89 incompatible keywords#189432

Merged
vgvassilev merged 1 commit intollvm:mainfrom
keremsahn:fix-c89-error
Mar 30, 2026
Merged

[clang-repl] Fix C89 incompatible keywords#189432
vgvassilev merged 1 commit intollvm:mainfrom
keremsahn:fix-c89-error

Conversation

@keremsahn
Copy link
Copy Markdown
Contributor

@keremsahn keremsahn commented Mar 30, 2026

Restrict and inline keywords are removed for C89 interpreter since these keywords caused fail at runtime preamble.

Links to #189088

@vgvassilev

@llvmbot llvmbot added clang Clang issues not falling into any other category clang:frontend Language frontend issues, e.g. anything involving "Sema" labels Mar 30, 2026
@llvmbot
Copy link
Copy Markdown
Member

llvmbot commented Mar 30, 2026

@llvm/pr-subscribers-clang

Author: Kerem Şahin (keremsahn)

Changes

Restrict and inline keywords are removed from C89 interpreter since these keywords caused fail at runtime preamble.

Links to #189088

@vgvassilev


Full diff: https://github.com/llvm/llvm-project/pull/189432.diff

2 Files Affected:

  • (modified) clang/lib/Interpreter/Interpreter.cpp (+9-2)
  • (modified) clang/test/Interpreter/pretty-print.c (+1)
diff --git a/clang/lib/Interpreter/Interpreter.cpp b/clang/lib/Interpreter/Interpreter.cpp
index 9c94cfa5ee381..2684a00ce5f07 100644
--- a/clang/lib/Interpreter/Interpreter.cpp
+++ b/clang/lib/Interpreter/Interpreter.cpp
@@ -337,9 +337,16 @@ const char *const Runtimes = R"(
       __clang_Interpreter_SetValueCopyArr(Src[0], Placement, Size);
     }
 #else
+    #if __STDC_VERSION__ < 199901L
+      #define CI_RESTRICT
+      #define CI_INLINE
+    #else
+      #define CI_RESTRICT restrict
+      #define CI_INLINE inline
+    #endif
     #define EXTERN_C extern
-    EXTERN_C void *memcpy(void *restrict dst, const void *restrict src, __SIZE_TYPE__ n);
-    EXTERN_C inline void __clang_Interpreter_SetValueCopyArr(const void* Src, void* Placement, unsigned long Size) {
+    EXTERN_C void *memcpy(void *CI_RESTRICT dst, const void *CI_RESTRICT src, __SIZE_TYPE__ n);
+    EXTERN_C CI_INLINE void __clang_Interpreter_SetValueCopyArr(const void* Src, void* Placement, unsigned long Size) {
       memcpy(Placement, Src, Size);
     }
 #endif // __cplusplus
diff --git a/clang/test/Interpreter/pretty-print.c b/clang/test/Interpreter/pretty-print.c
index b8058a762897e..9be13855eafe8 100644
--- a/clang/test/Interpreter/pretty-print.c
+++ b/clang/test/Interpreter/pretty-print.c
@@ -1,6 +1,7 @@
 // REQUIRES: host-supports-jit
 // RUN: cat %s | clang-repl -Xcc -xc  | FileCheck %s
 // RUN: cat %s | clang-repl -Xcc -std=c++11 | FileCheck %s
+// RUN: cat %s | clang-repl -Xcc -xc -Xcc -std=c89 | FileCheck %s
 
 // UNSUPPORTED: hwasan, msan
 

Copy link
Copy Markdown
Contributor

@vgvassilev vgvassilev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lgtm!

@vgvassilev vgvassilev merged commit 8bd8304 into llvm:main Mar 30, 2026
13 checks passed
@mcbarton
Copy link
Copy Markdown
Contributor

@vgvassilev can this added to the llvm 22 release branch, so that cppinterop can support the c89 flag for llvm 22?

@vgvassilev
Copy link
Copy Markdown
Contributor

/cherry-pick 8bd8304

@llvmbot
Copy link
Copy Markdown
Member

llvmbot commented Mar 31, 2026

/cherry-pick 8bd8304

Error: Command failed due to missing milestone.

@vgvassilev
Copy link
Copy Markdown
Contributor

/cherry-pick 8bd8304

@llvmbot
Copy link
Copy Markdown
Member

llvmbot commented Mar 31, 2026

/pull-request #189538

c-rhodes pushed a commit to llvmbot/llvm-project that referenced this pull request Mar 31, 2026
Restrict and inline keywords are removed for C89 interpreter since these
keywords caused fail at runtime preamble.

Fixes llvm#189088

(cherry picked from commit 8bd8304)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clang:frontend Language frontend issues, e.g. anything involving "Sema" clang Clang issues not falling into any other category

Projects

Development

Successfully merging this pull request may close these issues.

4 participants