llvm-project/llvm
Reid Kleckner d5e4ec74e3 [codeview] Fix 32-bit x86 variable locations in realigned stack frames
Add the .cv_fpo_stackalign directive so that we can define $T0, or the
VFRAME virtual register, with it. This was overlooked in the initial
implementation because unlike MSVC, we push CSRs before allocating stack
space, so this value is only needed to describe local variable
locations. Variables that the compiler now addresses via ESP are instead
described as being stored at offsets from VFRAME, which for us is ESP
after alignment in the prologue.

This adds tests that show that we use the VFRAME register properly in
our S_DEFRANGE records, and that we emit the correct FPO data to define
it.

Fixes PR38857

llvm-svn: 343603
2018-10-02 16:43:52 +00:00
..
benchmarks
bindings [bindings/go] Add Go bindings to the Token type 2018-09-28 17:39:59 +00:00
cmake Move llvm util dependencies from clang-tools-extra to add_lit_target. 2018-10-01 14:00:51 +00:00
docs The llvm-exegesis output file is a html file not a txt file. 2018-09-27 13:49:52 +00:00
examples [ORC] Fix BuildingAJIT tutorial examples that were broken by r343059. 2018-09-26 04:00:58 +00:00
include [AArch64][v8.5A] Add MTE as an optional AArch64 extension 2018-10-02 09:36:28 +00:00
lib [codeview] Fix 32-bit x86 variable locations in realigned stack frames 2018-10-02 16:43:52 +00:00
projects
resources
runtimes
test [codeview] Fix 32-bit x86 variable locations in realigned stack frames 2018-10-02 16:43:52 +00:00
tools [MCA] Remove SM.hasNext() call in FetchStage::execute. 2018-10-02 00:40:08 +00:00
unittests [AArch64][v8.5A] Add MTE as an optional AArch64 extension 2018-10-02 09:36:28 +00:00
utils Use the container form llvm::sort(C, ...) 2018-09-30 22:31:29 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

The LLVM Compiler Infrastructure
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.