Skip to content

[clang][utils] Remove ClangDataFormat.py for now #96385

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 22, 2024

Conversation

Michael137
Copy link
Member

This formatter doesn't currently provide much value. It only formats SourceLocation and QualType. The only formatting it does for QualType is call getAsString() on it.

The main motivator for the removal however is that the formatter implementation can be very slow (since it uses the expression evaluator in non-trivial ways).

Not infrequently do we get reports about LLDB being slow when debugging Clang, and it turns out the user was loading ClangDataFormat.py in their .lldbinit by default.

We should eventually develop proper formatters for Clang data-types, but these are currently not ready. So this patch removes them in the meantime to avoid users shooting themselves in the foot, and giving the wrong impression of these being reference implementations.

This formatter doesn't currently provide much value.
It only formats `SourceLocation` and `QualType`. The
only formatting it does for `QualType` is call `getAsString()`
on it.

The main motivator for the removal however is that the formatter
implementation can be very slow (since it uses the expression evaluator
in non-trivial ways).

Not infrequently do we get reports about LLDB being slow when debugging
Clang, and it turns out the user was loading `ClangDataFormat.py`
in their `.lldbinit` by default.

We should eventually develop proper formatters for Clang data-types,
but these are currently not ready. So this patch removes them in the
meantime to avoid users shooting themselves in the foot, and giving
the wrong impression of these being reference implementations.
@llvmbot llvmbot added the clang Clang issues not falling into any other category label Jun 22, 2024
@llvmbot
Copy link
Member

llvmbot commented Jun 22, 2024

@llvm/pr-subscribers-clang

Author: Michael Buch (Michael137)

Changes

This formatter doesn't currently provide much value. It only formats SourceLocation and QualType. The only formatting it does for QualType is call getAsString() on it.

The main motivator for the removal however is that the formatter implementation can be very slow (since it uses the expression evaluator in non-trivial ways).

Not infrequently do we get reports about LLDB being slow when debugging Clang, and it turns out the user was loading ClangDataFormat.py in their .lldbinit by default.

We should eventually develop proper formatters for Clang data-types, but these are currently not ready. So this patch removes them in the meantime to avoid users shooting themselves in the foot, and giving the wrong impression of these being reference implementations.


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

1 Files Affected:

  • (removed) clang/utils/ClangDataFormat.py (-170)
diff --git a/clang/utils/ClangDataFormat.py b/clang/utils/ClangDataFormat.py
deleted file mode 100644
index 28c32a123bdf9..0000000000000
--- a/clang/utils/ClangDataFormat.py
+++ /dev/null
@@ -1,170 +0,0 @@
-"""lldb data formatters for clang classes.
-
-Usage
---
-import this file in your ~/.lldbinit by adding this line:
-
-command script import /path/to/ClangDataFormat.py
-
-After that, instead of getting this:
-
-(lldb) p Tok.Loc
-(clang::SourceLocation) $0 = {
-  (unsigned int) ID = 123582
-}
-
-you'll get:
-
-(lldb) p Tok.Loc
-(clang::SourceLocation) $4 = "/usr/include/i386/_types.h:37:1" (offset: 123582, file, local)
-"""
-
-import lldb
-
-
-def __lldb_init_module(debugger, internal_dict):
-    debugger.HandleCommand(
-        "type summary add -F ClangDataFormat.SourceLocation_summary clang::SourceLocation"
-    )
-    debugger.HandleCommand(
-        "type summary add -F ClangDataFormat.QualType_summary clang::QualType"
-    )
-
-
-def SourceLocation_summary(srcloc, internal_dict):
-    return SourceLocation(srcloc).summary()
-
-
-def QualType_summary(qualty, internal_dict):
-    return QualType(qualty).summary()
-
-
-class SourceLocation(object):
-    def __init__(self, srcloc):
-        self.srcloc = srcloc
-        self.ID = srcloc.GetChildAtIndex(0).GetValueAsUnsigned()
-        self.frame = srcloc.GetFrame()
-
-    def offset(self):
-        return getValueFromExpression(self.srcloc, ".getOffset()").GetValueAsUnsigned()
-
-    def isInvalid(self):
-        return self.ID == 0
-
-    def isMacro(self):
-        return getValueFromExpression(self.srcloc, ".isMacroID()").GetValueAsUnsigned()
-
-    def isLocal(self, srcmgr_path):
-        return self.frame.EvaluateExpression(
-            "(%s).isLocalSourceLocation(%s)"
-            % (srcmgr_path, getExpressionPath(self.srcloc))
-        ).GetValueAsUnsigned()
-
-    def getPrint(self, srcmgr_path):
-        print_str = getValueFromExpression(
-            self.srcloc, ".printToString(%s)" % srcmgr_path
-        )
-        return print_str.GetSummary()
-
-    def summary(self):
-        if self.isInvalid():
-            return "<invalid loc>"
-        srcmgr_path = findObjectExpressionPath("clang::SourceManager", self.frame)
-        if srcmgr_path:
-            return "%s (offset: %d, %s, %s)" % (
-                self.getPrint(srcmgr_path),
-                self.offset(),
-                "macro" if self.isMacro() else "file",
-                "local" if self.isLocal(srcmgr_path) else "loaded",
-            )
-        return "(offset: %d, %s)" % (
-            self.offset(),
-            "macro" if self.isMacro() else "file",
-        )
-
-
-class QualType(object):
-    def __init__(self, qualty):
-        self.qualty = qualty
-
-    def getAsString(self):
-        std_str = getValueFromExpression(self.qualty, ".getAsString()")
-        return std_str.GetSummary()
-
-    def summary(self):
-        desc = self.getAsString()
-        if desc == '"NULL TYPE"':
-            return "<NULL TYPE>"
-        return desc
-
-
-# Key is a (function address, type name) tuple, value is the expression path for
-# an object with such a type name from inside that function.
-FramePathMapCache = {}
-
-
-def findObjectExpressionPath(typename, frame):
-    func_addr = frame.GetFunction().GetStartAddress().GetFileAddress()
-    key = (func_addr, typename)
-    try:
-        return FramePathMapCache[key]
-    except KeyError:
-        # print "CACHE MISS"
-        path = None
-        obj = findObject(typename, frame)
-        if obj:
-            path = getExpressionPath(obj)
-        FramePathMapCache[key] = path
-        return path
-
-
-def findObject(typename, frame):
-    def getTypename(value):
-        # FIXME: lldb should provide something like getBaseType
-        ty = value.GetType()
-        if ty.IsPointerType() or ty.IsReferenceType():
-            return ty.GetPointeeType().GetName()
-        return ty.GetName()
-
-    def searchForType(value, searched):
-        tyname = getTypename(value)
-        # print "SEARCH:", getExpressionPath(value), value.GetType().GetName()
-        if tyname == typename:
-            return value
-        ty = value.GetType()
-        if not (
-            ty.IsPointerType()
-            or ty.IsReferenceType()
-            or
-            # FIXME: lldb should provide something like getCanonicalType
-            tyname.startswith("llvm::IntrusiveRefCntPtr<")
-            or tyname.startswith("llvm::OwningPtr<")
-        ):
-            return None
-        # FIXME: Hashing for SBTypes does not seem to work correctly, uses the typename instead,
-        # and not the canonical one unfortunately.
-        if tyname in searched:
-            return None
-        searched.add(tyname)
-        for i in range(value.GetNumChildren()):
-            child = value.GetChildAtIndex(i, 0, False)
-            found = searchForType(child, searched)
-            if found:
-                return found
-
-    searched = set()
-    value_list = frame.GetVariables(True, True, True, True)
-    for val in value_list:
-        found = searchForType(val, searched)
-        if found:
-            return found if not found.TypeIsPointerType() else found.Dereference()
-
-
-def getValueFromExpression(val, expr):
-    return val.GetFrame().EvaluateExpression(getExpressionPath(val) + expr)
-
-
-def getExpressionPath(val):
-    stream = lldb.SBStream()
-    val.GetExpressionPath(stream)
-    return stream.GetData()

@Michael137 Michael137 requested a review from AaronBallman June 22, 2024 10:18
@Michael137 Michael137 merged commit 0fccae9 into llvm:main Jun 22, 2024
9 checks passed
@Michael137 Michael137 deleted the lldb/clang-formatters-removal branch June 22, 2024 16:07
@llvm-ci
Copy link
Collaborator

llvm-ci commented Jun 22, 2024

LLVM Buildbot has detected a new failure on builder lldb-arm-ubuntu running on linaro-lldb-arm-ubuntu while building clang at step 6 "test".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/18/builds/384

Here is the relevant piece of the build log for the reference:

Step 6 (test) failure: build (failure)
...
PASS: lldb-api :: functionalities/breakpoint/move_nearest/TestMoveNearest.py (313 of 2732)
UNSUPPORTED: lldb-api :: functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py (314 of 2732)
UNSUPPORTED: lldb-api :: functionalities/breakpoint/objc/TestObjCBreakpoints.py (315 of 2732)
PASS: lldb-api :: functionalities/breakpoint/source_regexp/TestSourceRegexBreakpoints.py (316 of 2732)
PASS: lldb-api :: functionalities/breakpoint/scripted_bkpt/TestScriptedResolver.py (317 of 2732)
PASS: lldb-api :: functionalities/breakpoint/serialize/TestBreakpointSerialization.py (318 of 2732)
PASS: lldb-api :: commands/process/attach/TestProcessAttach.py (319 of 2732)
UNSUPPORTED: lldb-api :: functionalities/breakpoint/two_hits_one_actual/TestTwoHitsOneActual.py (320 of 2732)
UNSUPPORTED: lldb-api :: functionalities/bt-interrupt/TestInterruptBacktrace.py (321 of 2732)
UNRESOLVED: lldb-api :: functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py (322 of 2732)
******************** TEST 'lldb-api :: functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py' FAILED ********************
Script:
--
/usr/bin/python3.8 /home/tcwg-buildbot/worker/lldb-arm-ubuntu/llvm-project/lldb/test/API/dotest.py -u CXXFLAGS -u CFLAGS --env ARCHIVER=/usr/local/bin/llvm-ar --env OBJCOPY=/usr/bin/llvm-objcopy --env LLVM_LIBS_DIR=/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./lib --env LLVM_INCLUDE_DIR=/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/include --env LLVM_TOOLS_DIR=/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./bin --arch armv8l --build-dir /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/lldb-test-build.noindex --lldb-module-cache-dir /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/lldb-test-build.noindex/module-cache-lldb/lldb-api --clang-module-cache-dir /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/lldb-test-build.noindex/module-cache-clang/lldb-api --executable /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./bin/lldb --compiler /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./bin/clang --dsymutil /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./bin/dsymutil --llvm-tools-dir /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./bin --lldb-obj-root /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/tools/lldb --lldb-libs-dir /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./lib /home/tcwg-buildbot/worker/lldb-arm-ubuntu/llvm-project/lldb/test/API/functionalities/breakpoint/step_over_breakpoint -p TestStepOverBreakpoint.py
--
Exit Code: -6

Command Output (stdout):
--
lldb version 19.0.0git (https://github.com/llvm/llvm-project.git revision 0fccae9d8e64f3b0f415946000d6ca79ae1255db)
  clang revision 0fccae9d8e64f3b0f415946000d6ca79ae1255db
  llvm revision 0fccae9d8e64f3b0f415946000d6ca79ae1255db

--
Command Output (stderr):
--
python3.8: ../llvm-project/llvm/include/llvm/ADT/SmallVector.h:754: iterator llvm::SmallVectorImpl<std::pair<std::weak_ptr<lldb_private::Listener>, unsigned int>>::erase(const_iterator) [T = std::pair<std::weak_ptr<lldb_private::Listener>, unsigned int>]: Assertion `this->isReferenceToStorage(CI) && "Iterator to erase is out of bounds."' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
#0 0xed9cce74 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/lib/python3.8/site-packages/lldb/_lldb.cpython-38-arm-linux-gnueabihf.so+0xf65e74)
#1 0xed9ca894 llvm::sys::RunSignalHandlers() (/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/lib/python3.8/site-packages/lldb/_lldb.cpython-38-arm-linux-gnueabihf.so+0xf63894)
#2 0xed9cd70c SignalHandler(int) (/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/lib/python3.8/site-packages/lldb/_lldb.cpython-38-arm-linux-gnueabihf.so+0xf6670c)
#3 0xf7b0a530 __default_sa_restorer /build/glibc-tftl1u/glibc-2.31/signal/../sysdeps/unix/sysv/linux/arm/sigrestorer.S:67:0
#4 0xf7afa7e6 /build/glibc-tftl1u/glibc-2.31/csu/../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47:0
#5 0xf7b097fe raise /build/glibc-tftl1u/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:28:1

--

********************
PASS: lldb-api :: functionalities/data-formatter/array_typedef/TestArrayTypedef.py (323 of 2732)
UNSUPPORTED: lldb-api :: functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py (324 of 2732)
PASS: lldb-api :: functionalities/conditional_break/TestConditionalBreak.py (325 of 2732)
PASS: lldb-api :: functionalities/data-formatter/builtin-formats/TestBuiltinFormats.py (326 of 2732)
UNSUPPORTED: lldb-api :: functionalities/data-formatter/compactvectors/TestCompactVectors.py (327 of 2732)
PASS: lldb-api :: functionalities/data-formatter/cstring-utf8-summary/TestCstringUnicode.py (328 of 2732)
PASS: lldb-api :: functionalities/data-formatter/callback-matching/TestDataFormatterCallbackMatching.py (329 of 2732)
PASS: lldb-api :: functionalities/breakpoint/thread_plan_user_breakpoint/TestThreadPlanUserBreakpoint.py (330 of 2732)
PASS: lldb-api :: functionalities/data-formatter/data-formatter-caching/TestDataFormatterCaching.py (331 of 2732)
PASS: lldb-api :: functionalities/data-formatter/custom-printf-summary/TestCustomSummaryLLVMFormat.py (332 of 2732)
PASS: lldb-api :: functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py (333 of 2732)

@Michael137
Copy link
Member Author

LLVM Buildbot has detected a new failure on builder lldb-arm-ubuntu running on linaro-lldb-arm-ubuntu while building clang at step 6 "test".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/18/builds/384

Here is the relevant piece of the build log for the reference:

Step 6 (test) failure: build (failure)
...
PASS: lldb-api :: functionalities/breakpoint/move_nearest/TestMoveNearest.py (313 of 2732)
UNSUPPORTED: lldb-api :: functionalities/breakpoint/hardware_breakpoints/hardware_breakpoint_on_multiple_threads/TestHWBreakMultiThread.py (314 of 2732)
UNSUPPORTED: lldb-api :: functionalities/breakpoint/objc/TestObjCBreakpoints.py (315 of 2732)
PASS: lldb-api :: functionalities/breakpoint/source_regexp/TestSourceRegexBreakpoints.py (316 of 2732)
PASS: lldb-api :: functionalities/breakpoint/scripted_bkpt/TestScriptedResolver.py (317 of 2732)
PASS: lldb-api :: functionalities/breakpoint/serialize/TestBreakpointSerialization.py (318 of 2732)
PASS: lldb-api :: commands/process/attach/TestProcessAttach.py (319 of 2732)
UNSUPPORTED: lldb-api :: functionalities/breakpoint/two_hits_one_actual/TestTwoHitsOneActual.py (320 of 2732)
UNSUPPORTED: lldb-api :: functionalities/bt-interrupt/TestInterruptBacktrace.py (321 of 2732)
UNRESOLVED: lldb-api :: functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py (322 of 2732)
******************** TEST 'lldb-api :: functionalities/breakpoint/step_over_breakpoint/TestStepOverBreakpoint.py' FAILED ********************
Script:
--
/usr/bin/python3.8 /home/tcwg-buildbot/worker/lldb-arm-ubuntu/llvm-project/lldb/test/API/dotest.py -u CXXFLAGS -u CFLAGS --env ARCHIVER=/usr/local/bin/llvm-ar --env OBJCOPY=/usr/bin/llvm-objcopy --env LLVM_LIBS_DIR=/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./lib --env LLVM_INCLUDE_DIR=/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/include --env LLVM_TOOLS_DIR=/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./bin --arch armv8l --build-dir /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/lldb-test-build.noindex --lldb-module-cache-dir /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/lldb-test-build.noindex/module-cache-lldb/lldb-api --clang-module-cache-dir /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/lldb-test-build.noindex/module-cache-clang/lldb-api --executable /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./bin/lldb --compiler /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./bin/clang --dsymutil /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./bin/dsymutil --llvm-tools-dir /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./bin --lldb-obj-root /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/tools/lldb --lldb-libs-dir /home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/./lib /home/tcwg-buildbot/worker/lldb-arm-ubuntu/llvm-project/lldb/test/API/functionalities/breakpoint/step_over_breakpoint -p TestStepOverBreakpoint.py
--
Exit Code: -6

Command Output (stdout):
--
lldb version 19.0.0git (https://github.com/llvm/llvm-project.git revision 0fccae9d8e64f3b0f415946000d6ca79ae1255db)
  clang revision 0fccae9d8e64f3b0f415946000d6ca79ae1255db
  llvm revision 0fccae9d8e64f3b0f415946000d6ca79ae1255db

--
Command Output (stderr):
--
python3.8: ../llvm-project/llvm/include/llvm/ADT/SmallVector.h:754: iterator llvm::SmallVectorImpl<std::pair<std::weak_ptr<lldb_private::Listener>, unsigned int>>::erase(const_iterator) [T = std::pair<std::weak_ptr<lldb_private::Listener>, unsigned int>]: Assertion `this->isReferenceToStorage(CI) && "Iterator to erase is out of bounds."' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
#0 0xed9cce74 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/lib/python3.8/site-packages/lldb/_lldb.cpython-38-arm-linux-gnueabihf.so+0xf65e74)
#1 0xed9ca894 llvm::sys::RunSignalHandlers() (/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/lib/python3.8/site-packages/lldb/_lldb.cpython-38-arm-linux-gnueabihf.so+0xf63894)
#2 0xed9cd70c SignalHandler(int) (/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/lib/python3.8/site-packages/lldb/_lldb.cpython-38-arm-linux-gnueabihf.so+0xf6670c)
#3 0xf7b0a530 __default_sa_restorer /build/glibc-tftl1u/glibc-2.31/signal/../sysdeps/unix/sysv/linux/arm/sigrestorer.S:67:0
#4 0xf7afa7e6 /build/glibc-tftl1u/glibc-2.31/csu/../sysdeps/unix/sysv/linux/arm/libc-do-syscall.S:47:0
#5 0xf7b097fe raise /build/glibc-tftl1u/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:28:1

--

********************
PASS: lldb-api :: functionalities/data-formatter/array_typedef/TestArrayTypedef.py (323 of 2732)
UNSUPPORTED: lldb-api :: functionalities/data-formatter/boolreference/TestFormattersBoolRefPtr.py (324 of 2732)
PASS: lldb-api :: functionalities/conditional_break/TestConditionalBreak.py (325 of 2732)
PASS: lldb-api :: functionalities/data-formatter/builtin-formats/TestBuiltinFormats.py (326 of 2732)
UNSUPPORTED: lldb-api :: functionalities/data-formatter/compactvectors/TestCompactVectors.py (327 of 2732)
PASS: lldb-api :: functionalities/data-formatter/cstring-utf8-summary/TestCstringUnicode.py (328 of 2732)
PASS: lldb-api :: functionalities/data-formatter/callback-matching/TestDataFormatterCallbackMatching.py (329 of 2732)
PASS: lldb-api :: functionalities/breakpoint/thread_plan_user_breakpoint/TestThreadPlanUserBreakpoint.py (330 of 2732)
PASS: lldb-api :: functionalities/data-formatter/data-formatter-caching/TestDataFormatterCaching.py (331 of 2732)
PASS: lldb-api :: functionalities/data-formatter/custom-printf-summary/TestCustomSummaryLLVMFormat.py (332 of 2732)
PASS: lldb-api :: functionalities/data-formatter/data-formatter-advanced/TestDataFormatterAdv.py (333 of 2732)

Seems unrelated

@Endilll
Copy link
Contributor

Endilll commented Jun 24, 2024

LGTM

We should eventually develop proper formatters for Clang data-types, but these are currently not ready.

Yes, I'm still working on that in background. LLDB has to have a way to understand custom RTTI we use in AST nodes for statements and types, because adding a vtable pointer will increase memory pressure. I'm working on such mechanism, and that's why it's taking so long.

@Michael137
Copy link
Member Author

LGTM

We should eventually develop proper formatters for Clang data-types, but these are currently not ready.

Yes, I'm still working on that in background. LLDB has to have a way to understand custom RTTI we use in AST nodes for statements and types, because adding a vtable pointer will increase memory pressure. I'm working on such mechanism, and that's why it's taking so long.

Thanks, greatly appreciated!

AlexisPerry pushed a commit to llvm-project-tlp/llvm-project that referenced this pull request Jul 9, 2024
This formatter doesn't currently provide much value. It only formats
`SourceLocation` and `QualType`. The only formatting it does for
`QualType` is call `getAsString()` on it.

The main motivator for the removal however is that the formatter
implementation can be very slow (since it uses the expression evaluator
in non-trivial ways).

Not infrequently do we get reports about LLDB being slow when debugging
Clang, and it turns out the user was loading `ClangDataFormat.py` in
their `.lldbinit` by default.

We should eventually develop proper formatters for Clang data-types, but
these are currently not ready. So this patch removes them in the
meantime to avoid users shooting themselves in the foot, and giving the
wrong impression of these being reference implementations.
emaxx-google added a commit to emaxx-google/llvm-project that referenced this pull request Nov 27, 2024
The script was removed in llvm#96385.

Instead, mention the LLVM formatter as it's still very useful
for Clang's code.
emaxx-google added a commit to emaxx-google/llvm-project that referenced this pull request Nov 27, 2024
The script was removed in llvm#96385.

Instead, mention the LLVM formatter as it's still very useful for Clang's code.
Michael137 pushed a commit that referenced this pull request Dec 4, 2024
The script was removed in
#96385.

Instead, mention the LLVM formatter as it's still very useful for
Clang's code.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang Clang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants