1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00
llvm-mirror/include/llvm
Adrian Prantl 57907269da [DIExpression] Introduce a dedicated DW_OP_LLVM_fragment operation
so we can stop using DW_OP_bit_piece with the wrong semantics.

The entire back story can be found here:
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20161114/405934.html

The gist is that in LLVM we've been misinterpreting DW_OP_bit_piece's
offset field to mean the offset into the source variable rather than
the offset into the location at the top the DWARF expression stack. In
order to be able to fix this in a subsequent patch, this patch
introduces a dedicated DW_OP_LLVM_fragment operation with the
semantics that we used to apply to DW_OP_bit_piece, which is what we
actually need while inside of LLVM. This patch is complete with a
bitcode upgrade for expressions using the old format. It does not yet
fix the DWARF backend to use DW_OP_bit_piece correctly.

Implementation note: We discussed several options for implementing
this, including reserving a dedicated field in DIExpression for the
fragment size and offset, but using an custom operator at the end of
the expression works just fine and is more efficient because we then
only pay for it when we need it.

Differential Revision: https://reviews.llvm.org/D27361
rdar://problem/29335809

llvm-svn: 288683
2016-12-05 18:04:47 +00:00
..
ADT [stl-extras] Provide an adaptor of std::count for ranges. 2016-12-04 10:26:53 +00:00
Analysis [TTI/CostModel] Correct the way getGEPCost() calls isLegalAddressingMode() 2016-12-03 01:57:24 +00:00
AsmParser
Bitcode Bitcode: Introduce BitcodeModule::{has,get}Summary(). 2016-12-01 06:00:53 +00:00
CodeGen [GlobalISel] Extract handleAssignments out of AArch64CallLowering 2016-12-05 10:40:33 +00:00
Config Suppress abi-breaking.h on cygming, for now. 2016-11-29 17:32:58 +00:00
DebugInfo This change removes the dependency on DwarfDebug that was used for DW_FORM_ref_addr by making a new DIEUnit class in DIE.cpp. 2016-12-01 18:56:29 +00:00
Demangle Add an c++ itanium demangler to llvm. 2016-09-06 19:16:48 +00:00
ExecutionEngine [Orc] Clang-format the recent RPC update (r286620 and related). 2016-11-17 02:33:47 +00:00
IR [DIExpression] Introduce a dedicated DW_OP_LLVM_fragment operation 2016-12-05 18:04:47 +00:00
IRReader [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
LibDriver [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
LineEditor Apply clang-tidy's misc-move-constructor-init throughout LLVM. 2016-05-27 14:27:24 +00:00
Linker [ThinLTO] Don't link module level assembly when importing 2016-10-12 18:39:29 +00:00
LTO LTO: Remove ModuleLoader, make loadModuleFromBuffer static and move into its only client, ThinLTOCodeGenerator. 2016-12-01 05:52:32 +00:00
MC [MC] Generalize MCContext's SectionSymbols field. 2016-12-03 23:55:57 +00:00
Object Object: Add SF_Executable symbol flag. 2016-12-01 06:53:47 +00:00
ObjectYAML [macho2yaml] Don't write empty linkedit data 2016-08-17 21:46:04 +00:00
Option Generalize ArgList::AddAllArgs more 2016-09-29 19:47:58 +00:00
Passes [PM] Significantly refactor the pass pipeline parsing to be easier to 2016-08-03 03:21:41 +00:00
ProfileData Fix comment typos. NFC. 2016-11-20 13:47:59 +00:00
Support [DIExpression] Introduce a dedicated DW_OP_LLVM_fragment operation 2016-12-05 18:04:47 +00:00
TableGen TableGen: Some more std::string->StringInit* replacements 2016-12-05 07:35:13 +00:00
Target Clarify rules for reserved regs, fix aarch64 ones. 2016-11-30 22:17:10 +00:00
Transforms IR: Change the gep_type_iterator API to avoid always exposing the "current" type. 2016-12-02 02:24:42 +00:00
CMakeLists.txt
InitializePasses.h Introduce GlobalSplit pass. 2016-11-16 23:40:26 +00:00
LinkAllIR.h Remove unused #includes of TimeValue.h. NFC. 2016-10-24 14:00:26 +00:00
LinkAllPasses.h Add Loop Sink pass to reverse the LICM based of basic block frequency. 2016-10-27 16:30:08 +00:00
module.modulemap [ORC] Work around an apparent modules/linkage issue. 2016-11-15 02:14:57 +00:00
module.modulemap.build Fix module map to create a module for the configured header Config/abi-breaking.h 2016-12-01 19:08:38 +00:00
Pass.h Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
PassAnalysisSupport.h Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
PassInfo.h [llvm] Remove duplicate header from PassInfo.h 2016-11-11 02:01:32 +00:00
PassRegistry.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
PassSupport.h Use StringRef in Pass Info/Support API (NFC) 2016-10-01 04:03:30 +00:00