1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00
llvm-mirror/lib/MC
Reid Kleckner c7b264dacb [codeview] Implement FPO data assembler directives
Summary:
This adds a set of new directives that describe 32-bit x86 prologues.
The directives are limited and do not expose the full complexity of
codeview FPO data. They are merely a convenience for the compiler to
generate more readable assembly so we don't need to generate tons of
labels in CodeGen. If our prologue emission changes in the future, we
can change the set of available directives to suit our needs. These are
modelled after the .seh_ directives, which use a different format that
interacts with exception handling.

The directives are:
  .cv_fpo_proc _foo
  .cv_fpo_pushreg ebp/ebx/etc
  .cv_fpo_setframe ebp/esi/etc
  .cv_fpo_stackalloc 200
  .cv_fpo_endprologue
  .cv_fpo_endproc
  .cv_fpo_data _foo

I tried to follow the implementation of ARM EHABI CFI directives by
sinking most directives out of MCStreamer and into X86TargetStreamer.
This helps avoid polluting non-X86 code with WinCOFF specific logic.

I used cdb to confirm that this can show locals in parent CSRs in a few
cases, most importantly the one where we use ESI as a frame pointer,
i.e. the one in http://crbug.com/756153#c28

Once we have cdb integration in debuginfo-tests, we can add integration
tests there.

Reviewers: majnemer, hans

Subscribers: aemerson, mgorny, kristof.beyls, llvm-commits, hiraditya

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

llvm-svn: 315513
2017-10-11 21:24:33 +00:00
..
MCDisassembler Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MCParser [codeview] Implement FPO data assembler directives 2017-10-11 21:24:33 +00:00
CMakeLists.txt Rename WinCOFFStreamer.cpp -> MCWinCOFFStreamer.cpp 2017-06-21 20:58:17 +00:00
ConstantPools.cpp Re-apply r302416: [ARM] Clear the constant pool cache on explicit .ltorg directives 2017-05-22 09:42:07 +00:00
ELFObjectWriter.cpp [MC] Thread unique_ptr<MCObjectWriter> through the create.*ObjectWriter 2017-10-10 16:28:07 +00:00
LLVMBuild.txt
MachObjectWriter.cpp [MC] Thread unique_ptr<MCObjectWriter> through the create.*ObjectWriter 2017-10-10 16:28:07 +00:00
MCAsmBackend.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MCAsmInfo.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
MCAsmInfoCOFF.cpp [MC] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-11 00:27:28 +00:00
MCAsmInfoDarwin.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
MCAsmInfoELF.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
MCAsmInfoWasm.cpp [WebAssembly] Add skeleton MC support for the Wasm container format 2017-02-22 01:23:18 +00:00
MCAsmStreamer.cpp [codeview] Implement FPO data assembler directives 2017-10-11 21:24:33 +00:00
MCAssembler.cpp Simplify interface now that we don't need to pass IsPCRel. NFC. 2017-07-11 23:56:10 +00:00
MCCodeEmitter.cpp [MC] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-08 22:23:19 +00:00
MCCodeView.cpp Re-land "Fix Bug 30978 by emitting cv file checksums." 2017-09-19 18:14:45 +00:00
MCContext.cpp [WebAssembly] Remove flags from MCSectionWasm 2017-09-12 18:31:24 +00:00
MCDwarf.cpp MC: simplify internal function call parameter 2017-07-29 20:03:02 +00:00
MCELFObjectTargetWriter.cpp [mips] Do not pass redundant IsN64 flag to MCELFObjectTargetWriter. NFC 2017-09-21 14:04:47 +00:00
MCELFStreamer.cpp [MC] Have MCObjectStreamer take its MCAsmBackend argument via unique_ptr. 2017-10-11 01:57:21 +00:00
MCExpr.cpp [MachO] Fix codegen of alias of alias. 2017-06-08 20:49:03 +00:00
MCFragment.cpp [llvm] Fix some typos. NFC. 2017-09-15 20:01:43 +00:00
MCInst.cpp [MC] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-11 00:27:28 +00:00
MCInstPrinter.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MCInstrAnalysis.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MCInstrDesc.cpp
MCLabel.cpp [MC] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-08 22:23:19 +00:00
MCLinkerOptimizationHint.cpp [MC] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-11 00:27:28 +00:00
MCMachObjectTargetWriter.cpp [MC] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-02-11 00:27:28 +00:00
MCMachOStreamer.cpp [MC] Have MCObjectStreamer take its MCAsmBackend argument via unique_ptr. 2017-10-11 01:57:21 +00:00
MCNullStreamer.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MCObjectFileInfo.cpp [llvm-dsymutil] Add support for __swift_ast MachO DWARF section 2017-10-06 14:49:20 +00:00
MCObjectStreamer.cpp [MC] Have MCObjectStreamer take its MCAsmBackend argument via unique_ptr. 2017-10-11 01:57:21 +00:00
MCObjectWriter.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MCRegisterInfo.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MCSchedule.cpp
MCSection.cpp Mark dump() methods as const. NFC 2017-06-21 22:19:17 +00:00
MCSectionCOFF.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
MCSectionELF.cpp [Triple] Add isThumb and isARM functions. 2017-08-12 17:40:18 +00:00
MCSectionMachO.cpp Fix the GCC build. 2017-01-30 19:05:09 +00:00
MCSectionWasm.cpp [WebAssembly] Add skeleton MC support for the Wasm container format 2017-02-22 01:23:18 +00:00
MCStreamer.cpp [MC] Properly diagnose badly scoped .cfi_ directives 2017-10-10 01:49:21 +00:00
MCSubtargetInfo.cpp Typo: const MCSchedModel SchedModel -> const MCSchedModel &SchedModel 2017-09-27 12:48:48 +00:00
MCSymbol.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MCSymbolELF.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
MCTargetOptions.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
MCValue.cpp Cleanup dump() functions. 2017-01-28 02:02:38 +00:00
MCWasmObjectTargetWriter.cpp [WebAssembly] Remove unused methods from MCWasmObjectTargetWriter 2017-06-06 16:38:59 +00:00
MCWasmStreamer.cpp [MC] Have MCObjectStreamer take its MCAsmBackend argument via unique_ptr. 2017-10-11 01:57:21 +00:00
MCWin64EH.cpp [MC] Use unique_ptr to manage WinFrameInfos, NFC 2017-10-06 17:21:49 +00:00
MCWinCOFFStreamer.cpp [MC] Have MCObjectStreamer take its MCAsmBackend argument via unique_ptr. 2017-10-11 01:57:21 +00:00
MCWinEH.cpp Move Object format code to lib/BinaryFormat. 2017-06-07 03:48:56 +00:00
StringTableBuilder.cpp Simplify multikey_qsort function. 2017-10-03 23:12:01 +00:00
SubtargetFeature.cpp Sort the remaining #include lines in include/... and lib/.... 2017-06-06 11:49:48 +00:00
WasmObjectWriter.cpp [MC] Thread unique_ptr<MCObjectWriter> through the create.*ObjectWriter 2017-10-10 16:28:07 +00:00
WinCOFFObjectWriter.cpp [MC] Thread unique_ptr<MCObjectWriter> through the create.*ObjectWriter 2017-10-10 16:28:07 +00:00