diff --git a/clang/lib/Frontend/Rewrite/RewriteBSC.cpp b/clang/lib/Frontend/Rewrite/RewriteBSC.cpp index cba38098948d90ab3ccb4b3291aa7d6c4fad4e52..cc24e52ef5a5d724d4e13fa808b7e4d28763ebf2 100644 --- a/clang/lib/Frontend/Rewrite/RewriteBSC.cpp +++ b/clang/lib/Frontend/Rewrite/RewriteBSC.cpp @@ -783,6 +783,9 @@ void RewriteBSC::RewriteNonGenericFuncAndVar(std::vector &DeclList) { FunctionDecl *FD = cast(D); // Don't print the declaration of a function of a generic class. // It will be printed when manipulating ClassTemplateDecl. + if (FD->getBuiltinID()) { + break; + } if (isa_and_nonnull(FD->getParent()) && cast(FD->getParent())->getDescribedClassTemplate()) { break; diff --git a/clang/test/BSC/Positive/Driver/rewrite-bsc/Generic/rewrite_bsc_buildin/rewrite_bsc_buildin.cbs b/clang/test/BSC/Positive/Driver/rewrite-bsc/Generic/rewrite_bsc_buildin/rewrite_bsc_buildin.cbs new file mode 100644 index 0000000000000000000000000000000000000000..c1a3787704786a9ef29b03d579c3af3d1b41aa2e --- /dev/null +++ b/clang/test/BSC/Positive/Driver/rewrite-bsc/Generic/rewrite_bsc_buildin/rewrite_bsc_buildin.cbs @@ -0,0 +1,22 @@ +// RUN: %clang -rewrite-bsc %s -o %t-rw.c +// RUN: FileCheck --input-file=%t-rw.c %s +// RUN: %clang %t-rw.c -o %t-rw.output +// RUN: %t-rw.output + +#define ____IS(x) (((x) != ((typeof(x))0)) ? 1 : 0) +void __bzero_const_maybe_32byte_40byte() +{ + if (____IS(__builtin_constant_p(1))) {} +} +int main(){ + return 0; +} + +// CHECK: #define ____IS(x) (((x) != ((typeof(x))0)) ? 1 : 0) +// CHECK: void __bzero_const_maybe_32byte_40byte() +// CHECK-NEXT: { +// CHECK-NEXT: if (____IS(__builtin_constant_p(1))) {} +// CHECK-NEXT: } +// CHECK: int main(){ +// CHECK-NEXT: return 0; +// CHECK-NEXT: } \ No newline at end of file