[lldb][CompilerType] Add CompilerType::IsRealFloatingPointType (#178904) This is part of a patch series to clean up the `TypeSystemClang::IsFloatingPointType` API. Currently the API is a bit of a foot-gun because it returns `true` for both Complex floats and vector types whose element types are floats, but most call-sites probably don't handle these correctly. The former aligns with the `clang::Type::isFloatingType` API, but the latter doesn't. This specific implementation choice will be addressed in a separate patch. This patch adds a new `CompilerType::IsRealFloatingPointType` API which clients can use to query about non-complex floats (named after the similarly named `clang::Type::isRealFloatingType`). This allows us to clean up some of the callers which only wanted to handle non-complex floats. I cleaned those up as part of this patch. Wherever we checked for `is_float && !is_complex && !is_vector_type` i just replaced it with the new API. On encountering complex/vector floats, some of the ABI plugins would set an error but then immediately overwrite the error to something else. I just removed those branches entirely, since it was essentially dead code. Some of the diff is large because of un-indentation when we remove if-guards, so I would recommend turning off white-space diff when reviewing.
Welcome to the LLVM project!
This repository contains the source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and run-time environments.
The LLVM project has multiple components. The core of the project is itself called “LLVM”. This contains all of the tools, libraries, and header files needed to process intermediate representations and convert them into object files. Tools include an assembler, disassembler, bitcode analyzer, and bitcode optimizer.
C-like languages use the Clang frontend. This component compiles C, C++, Objective-C, and Objective-C++ code into LLVM bitcode -- and from there into object files, using LLVM.
Other components include: the libc++ C++ standard library, the LLD linker, and more.
Consult the Getting Started with LLVM page for information on building and running LLVM.
For information on how to contribute to the LLVM project, please take a look at the Contributing to LLVM guide.
Join the LLVM Discourse forums, Discord chat, LLVM Office Hours or Regular sync-ups.
The LLVM project has adopted a code of conduct for participants to all modes of communication within the project.