llvm-project/llvm/include/llvm-c
Aaron Smith 23c2d1c15a [DebugInfo] Add a new DI flag to record if a C++ record is a trivial type
Summary:
This flag is used when emitting debug info and is needed to initialize subprogram and member function attributes (function options) for Codeview. These function options are used to create an accurate compiler type for UDT symbols (class/struct/union) from PDBs.

It is not easy to determine if a C++ record is trivial or not based on the current DICompositeType flags and other accessible debug information from Codeview. For example, without this flag the metadata for a non-trivial C++ record with user-defined ctor and a trivial one with a defaulted ctor are the same.

    struct S { S(); }
    struct S { S() = default; }

This change introduces a new DI flag and corresponding clang::CXXRecordDecl::isTrivial method to set the flag in the frontend.

Reviewers: rnk, zturner, llvm-commits, dblaikie, aleksandr.urakov, deadalnix

Reviewed By: rnk

Subscribers: asmith, probinson, aprantl, JDevlieghere

Differential Revision: https://reviews.llvm.org/D45122

llvm-svn: 337641
2018-07-21 05:42:13 +00:00
..
Transforms [UnrollAndJam] New Unroll and Jam pass 2018-07-01 12:47:30 +00:00
Analysis.h
BitReader.h
BitWriter.h
Comdat.h [LLVM-C] [bindings/go] Add C and Golang bindings for COMDAT 2018-03-14 18:33:53 +00:00
Core.h [LLVM-C] Improve Bindings For Aliases 2018-05-20 23:49:08 +00:00
DataTypes.h Assume existence of inttypes.h and stdint.h in DataTypes.h. 2018-04-02 13:22:26 +00:00
DebugInfo.h [DebugInfo] Add a new DI flag to record if a C++ record is a trivial type 2018-07-21 05:42:13 +00:00
Disassembler.h Split Disassembler.h in two to fix dependencies 2018-03-29 00:29:44 +00:00
DisassemblerTypes.h Split Disassembler.h in two to fix dependencies 2018-03-29 00:29:44 +00:00
ErrorHandling.h
ExecutionEngine.h [C-API] Add functions to create GDB, Intel, Oprofile event listeners. 2018-05-24 21:32:54 +00:00
IRReader.h
Initialization.h [AggressiveInstCombine] Add aggressive inst combiner to the LLVM C API. 2018-04-24 00:39:29 +00:00
LinkTimeOptimizer.h
Linker.h
Object.h
OrcBindings.h [ORC][C-API] Expose LLVMOrc{Unr,R}egisterJITEventListener(). 2018-05-24 21:32:52 +00:00
Support.h Reapply Support layering fixes. 2018-03-21 17:31:49 +00:00
Target.h
TargetMachine.h [LLVM-C] Add target triple normalization to the C API. 2018-07-17 10:57:39 +00:00
Types.h [ORC][C-API] Expose LLVMOrc{Unr,R}egisterJITEventListener(). 2018-05-24 21:32:52 +00:00
lto.h Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
module.modulemap