diff --git a/src/kernel_services/ast_queries/file.ml b/src/kernel_services/ast_queries/file.ml
index 213a01aa72e0f96f949d035b2793bb2151a65b44..8021b38c897f4a58823353ebb5f6d325c89602cb 100644
--- a/src/kernel_services/ast_queries/file.ml
+++ b/src/kernel_services/ast_queries/file.ml
@@ -441,6 +441,10 @@ let safe_remove_file (f : Datatype.Filepath.t) =
   if not (Kernel.is_debug_key_enabled Kernel.dkey_parser) then
     Extlib.safe_remove (f :> string)
 
+let cpp_name cmd =
+  let cmd = List.hd (String.split_on_char ' ' cmd) in
+  Filename.basename cmd
+
 let replace_in_cpp_cmd cmdl supp_args in_file out_file =
   (* using Filename.quote for filenames which contain space or shell
      metacharacters *)
@@ -516,6 +520,12 @@ let build_cpp_cmd = function
       else []
     in
     let fc_define_args = ["__FRAMAC__"] in
+    let clang_no_warn =
+      if cpp_name cmdl = "clang" then
+        ["-Wno-builtin-macro-redefined"]
+      else
+        []
+    in
     let nostdinc_arg =
       if Kernel.FramaCStdLib.get() then add_if_gnu "-nostdinc"
       else []
@@ -537,7 +547,7 @@ let build_cpp_cmd = function
     in
     let supp_args =
       string_of_supp_args
-        (gnu_implicit_args @
+        (gnu_implicit_args @ clang_no_warn @
          extra_for_this_file @ (Kernel.CppExtraArgs.get ()))
         fc_include_args fc_define_args
     in