SuccessChanges

Summary

  1. Fix C++ modules build llvm-svn: 366344 missed an include that broke the LLVM_ENABLE_MODULES build.
  2. [RISCV] Hard float ABI support The RISC-V hard float calling convention requires the frontend to: * Detect cases where, once "flattened", a struct can be passed using int+fp or fp+fp registers under the hard float ABI and coerce to the appropriate type(s) * Track usage of GPRs and FPRs in order to gate the above, and to determine when signext/zeroext attributes must be added to integer scalars This patch attempts to do this in compliance with the documented ABI, and uses ABIArgInfo::CoerceAndExpand in order to do this. @rjmccall, as author of that code I've tagged you as reviewer for initial feedback on my usage. Note that a previous version of the ABI indicated that when passing an int+fp struct using a GPR+FPR, the int would need to be sign or zero-extended appropriately. GCC never did this and the ABI was changed, which makes life easier as ABIArgInfo::CoerceAndExpand can't currently handle sign/zero-extension attributes. Re-landed after backing out 366450 due to missed hunks. Differential Revision: https://reviews.llvm.org/D60456
  3. [COFF] Change a variable type to be const in the HeapAllocSite map.
Revision 366481 by Raphael Isemann:
Fix C++ modules build

llvm-svn: 366344 missed an include that broke the LLVM_ENABLE_MODULES
build.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/ExecutionEngine/Orc/LambdaResolver.h (diff)llvm.src/include/llvm/ExecutionEngine/Orc/LambdaResolver.h
Revision 366480 by asb:
[RISCV] Hard float ABI support

The RISC-V hard float calling convention requires the frontend to:

* Detect cases where, once "flattened", a struct can be passed using
int+fp or fp+fp registers under the hard float ABI and coerce to the
appropriate type(s)
* Track usage of GPRs and FPRs in order to gate the above, and to
determine when signext/zeroext attributes must be added to integer
scalars

This patch attempts to do this in compliance with the documented ABI,
and uses ABIArgInfo::CoerceAndExpand in order to do this. @rjmccall, as
author of that code I've tagged you as reviewer for initial feedback on
my usage.

Note that a previous version of the ABI indicated that when passing an
int+fp struct using a GPR+FPR, the int would need to be sign or
zero-extended appropriately. GCC never did this and the ABI was changed,
which makes life easier as ABIArgInfo::CoerceAndExpand can't currently
handle sign/zero-extension attributes.

Re-landed after backing out 366450 due to missed hunks.

Differential Revision: https://reviews.llvm.org/D60456
Change TypePath in RepositoryPath in Workspace
The file was modified/cfe/trunk/lib/Basic/Targets/RISCV.cpp (diff)clang.src/lib/Basic/Targets/RISCV.cpp
The file was modified/cfe/trunk/lib/Basic/Targets/RISCV.h (diff)clang.src/lib/Basic/Targets/RISCV.h
The file was modified/cfe/trunk/lib/CodeGen/TargetInfo.cpp (diff)clang.src/lib/CodeGen/TargetInfo.cpp
The file was modified/cfe/trunk/test/CodeGen/riscv32-ilp32-ilp32f-abi.c (diff)clang.src/test/CodeGen/riscv32-ilp32-ilp32f-abi.c
The file was modified/cfe/trunk/test/CodeGen/riscv32-ilp32-ilp32f-ilp32d-abi.c (diff)clang.src/test/CodeGen/riscv32-ilp32-ilp32f-ilp32d-abi.c
The file was added/cfe/trunk/test/CodeGen/riscv32-ilp32d-abi.cclang.src/test/CodeGen/riscv32-ilp32d-abi.c
The file was added/cfe/trunk/test/CodeGen/riscv32-ilp32f-abi.cclang.src/test/CodeGen/riscv32-ilp32f-abi.c
The file was added/cfe/trunk/test/CodeGen/riscv32-ilp32f-ilp32d-abi.cclang.src/test/CodeGen/riscv32-ilp32f-ilp32d-abi.c
The file was modified/cfe/trunk/test/CodeGen/riscv64-lp64-lp64f-abi.c (diff)clang.src/test/CodeGen/riscv64-lp64-lp64f-abi.c
The file was modified/cfe/trunk/test/CodeGen/riscv64-lp64-lp64f-lp64d-abi.c (diff)clang.src/test/CodeGen/riscv64-lp64-lp64f-lp64d-abi.c
The file was added/cfe/trunk/test/CodeGen/riscv64-lp64d-abi.cclang.src/test/CodeGen/riscv64-lp64d-abi.c
The file was added/cfe/trunk/test/CodeGen/riscv64-lp64f-lp64d-abi.cclang.src/test/CodeGen/riscv64-lp64f-lp64d-abi.c
The file was modified/cfe/trunk/test/Driver/riscv-abi.c (diff)clang.src/test/Driver/riscv-abi.c
The file was modified/cfe/trunk/test/Preprocessor/riscv-target-features.c (diff)clang.src/test/Preprocessor/riscv-target-features.c
Revision 366479 by akhuang:
[COFF] Change a variable type to be const in the HeapAllocSite map.
Change TypePath in RepositoryPath in Workspace
The file was modified/llvm/trunk/include/llvm/CodeGen/MachineFunction.h (diff)llvm.src/include/llvm/CodeGen/MachineFunction.h
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp (diff)llvm.src/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp
The file was modified/llvm/trunk/lib/CodeGen/AsmPrinter/CodeViewDebug.h (diff)llvm.src/lib/CodeGen/AsmPrinter/CodeViewDebug.h
The file was modified/llvm/trunk/lib/CodeGen/MachineFunction.cpp (diff)llvm.src/lib/CodeGen/MachineFunction.cpp
The file was modified/llvm/trunk/lib/CodeGen/SelectionDAG/FastISel.cpp (diff)llvm.src/lib/CodeGen/SelectionDAG/FastISel.cpp