https://github.com/kadircet updated https://github.com/llvm/llvm-project/pull/100135
From 884a272b83271ae869cbc4b523424f909e77bdba Mon Sep 17 00:00:00 2001 From: Kadir Cetinkaya <kadir...@google.com> Date: Tue, 23 Jul 2024 16:46:21 +0200 Subject: [PATCH] [clang][Driver] Add cc1 flag for setting SkipFunctionBodies This is an option set by certain tools (clangd and ASTUnit). Sometimes there are crashes in clang unique to this configuration and it's really hard to provide reproducers without invoking the tool. --- clang/include/clang/Driver/Options.td | 3 +++ clang/test/Frontend/skip-function-bodies.cpp | 13 +++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 clang/test/Frontend/skip-function-bodies.cpp diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 69269cf7537b0..130b2bd68c8b4 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -7525,6 +7525,9 @@ def code_completion_brief_comments : Flag<["-"], "code-completion-brief-comments def code_completion_with_fixits : Flag<["-"], "code-completion-with-fixits">, HelpText<"Include code completion results which require small fix-its.">, MarshallingInfoFlag<FrontendOpts<"CodeCompleteOpts.IncludeFixIts">>; +def skip_function_bodies : Flag<["-"], "skip-function-bodies">, + HelpText<"Skip function bodies when possible">, + MarshallingInfoFlag<FrontendOpts<"SkipFunctionBodies">>; def disable_free : Flag<["-"], "disable-free">, HelpText<"Disable freeing of memory on exit">, MarshallingInfoFlag<FrontendOpts<"DisableFree">>; diff --git a/clang/test/Frontend/skip-function-bodies.cpp b/clang/test/Frontend/skip-function-bodies.cpp new file mode 100644 index 0000000000000..d0593b474bda2 --- /dev/null +++ b/clang/test/Frontend/skip-function-bodies.cpp @@ -0,0 +1,13 @@ +// Trivial check to ensure skip-function-bodies flag is propagated. +// +// RUN: %clang_cc1 -verify -skip-function-bodies -pedantic-errors %s +// expected-no-diagnostics + +int f() { + // normally this should emit some diags, but we're skipping it! + this is garbage; +} + +// Make sure we only accept it as a cc1 arg. +// RUN: not %clang -skip-function-bodies %s 2>&1 | FileCheck %s +// CHECK: clang: error: unknown argument '-skip-function-bodies'; did you mean '-Xclang -skip-function-bodies'? _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits