[llvm] r200444 - [Stackmaps] Record the stack size of each function that contains a stackmap/patchpoint intrinsic.
Juergen Ributzka
juergen at apple.com
Wed Jan 29 19:50:24 PST 2014
I reverted it until I have a fix.
-Juergen
On Jan 29, 2014, at 7:23 PM, NAKAMURA Takumi <geek4civic at gmail.com> wrote:
> It broke builds.
>
> I wonder codegen and asmprinter are cyclic-dependent...
>
> ...Takumi
>
> 2014-01-30 Juergen Ributzka <juergen at apple.com>:
>> Author: ributzka
>> Date: Wed Jan 29 21:06:14 2014
>> New Revision: 200444
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=200444&view=rev
>> Log:
>> [Stackmaps] Record the stack size of each function that contains a stackmap/patchpoint intrinsic.
>>
>> Reviewed by Andy
>>
>> Modified:
>> llvm/trunk/docs/StackMaps.rst
>> llvm/trunk/include/llvm/CodeGen/StackMaps.h
>> llvm/trunk/lib/CodeGen/StackMaps.cpp
>> llvm/trunk/test/CodeGen/X86/anyregcc.ll
>> llvm/trunk/test/CodeGen/X86/stackmap-liveness.ll
>> llvm/trunk/test/CodeGen/X86/stackmap.ll
>>
>> Modified: llvm/trunk/docs/StackMaps.rst
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/StackMaps.rst?rev=200444&r1=200443&r2=200444&view=diff
>> ==============================================================================
>> --- llvm/trunk/docs/StackMaps.rst (original)
>> +++ llvm/trunk/docs/StackMaps.rst Wed Jan 29 21:06:14 2014
>> @@ -314,6 +314,11 @@ format of this section follows:
>> .. code-block:: none
>>
>> uint32 : Reserved (header)
>> + uint32 : NumFunctions
>> + StkSizeRecord[NumFunctions] {
>> + uint32 : Function Offset
>> + uint32 : Stack Size
>> + }
>> uint32 : NumConstants
>> Constants[NumConstants] {
>> uint64 : LargeConstant
>>
>> Modified: llvm/trunk/include/llvm/CodeGen/StackMaps.h
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/StackMaps.h?rev=200444&r1=200443&r2=200444&view=diff
>> ==============================================================================
>> --- llvm/trunk/include/llvm/CodeGen/StackMaps.h (original)
>> +++ llvm/trunk/include/llvm/CodeGen/StackMaps.h Wed Jan 29 21:06:14 2014
>> @@ -11,6 +11,7 @@
>> #ifndef LLVM_STACKMAPS
>> #define LLVM_STACKMAPS
>>
>> +#include "llvm/ADT/MapVector.h"
>> #include "llvm/ADT/SmallVector.h"
>> #include "llvm/CodeGen/MachineInstr.h"
>> #include <map>
>> @@ -132,6 +133,7 @@ public:
>> private:
>> typedef SmallVector<Location, 8> LocationVec;
>> typedef SmallVector<LiveOutReg, 8> LiveOutVec;
>> + typedef MapVector<const MCSymbol *, uint32_t> FnStackSizeMap;
>>
>> struct CallsiteInfo {
>> const MCExpr *CSOffsetExpr;
>> @@ -170,6 +172,7 @@ private:
>> AsmPrinter &AP;
>> CallsiteInfoList CSInfos;
>> ConstantPool ConstPool;
>> + FnStackSizeMap FnStackSize;
>>
>> MachineInstr::const_mop_iterator
>> parseOperand(MachineInstr::const_mop_iterator MOI,
>>
>> Modified: llvm/trunk/lib/CodeGen/StackMaps.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/StackMaps.cpp?rev=200444&r1=200443&r2=200444&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/CodeGen/StackMaps.cpp (original)
>> +++ llvm/trunk/lib/CodeGen/StackMaps.cpp Wed Jan 29 21:06:14 2014
>> @@ -11,6 +11,8 @@
>>
>> #include "llvm/CodeGen/StackMaps.h"
>> #include "llvm/CodeGen/AsmPrinter.h"
>> +#include "llvm/CodeGen/MachineFunction.h"
>> +#include "llvm/CodeGen/MachineFrameInfo.h"
>> #include "llvm/CodeGen/MachineInstr.h"
>> #include "llvm/IR/DataLayout.h"
>> #include "llvm/MC/MCContext.h"
>> @@ -216,12 +218,19 @@ void StackMaps::recordStackMapOpers(cons
>> }
>> }
>>
>> + // Create an expression to calculate the offset of the callsite from function
>> + // entry.
>> const MCExpr *CSOffsetExpr = MCBinaryExpr::CreateSub(
>> MCSymbolRefExpr::Create(MILabel, OutContext),
>> MCSymbolRefExpr::Create(AP.CurrentFnSym, OutContext),
>> OutContext);
>>
>> CSInfos.push_back(CallsiteInfo(CSOffsetExpr, ID, Locations, LiveOuts));
>> +
>> + // Record the stack size of the current function.
>> + const MachineFrameInfo *MFI = AP.MF->getFrameInfo();
>> + FnStackSize[AP.CurrentFnSym] =
>> + MFI->hasVarSizedObjects() ? ~0U : MFI->getStackSize();
>> }
>>
>> void StackMaps::recordStackMap(const MachineInstr &MI) {
>> @@ -258,6 +267,11 @@ void StackMaps::recordPatchPoint(const M
>> /// serializeToStackMapSection conceptually populates the following fields:
>> ///
>> /// uint32 : Reserved (header)
>> +/// uint32 : NumFunctions
>> +/// StkSizeRecord[NumFunctions] {
>> +/// uint32 : Function Offset
>> +/// uint32 : Stack Size
>> +/// }
>> /// uint32 : NumConstants
>> /// int64 : Constants[NumConstants]
>> /// uint32 : NumRecords
>> @@ -313,6 +327,16 @@ void StackMaps::serializeToStackMapSecti
>> // Header.
>> AP.OutStreamer.EmitIntValue(0, 4);
>>
>> + // Num functions.
>> + AP.OutStreamer.EmitIntValue(FnStackSize.size(), 4);
>> +
>> + // Stack size entries.
>> + for (FnStackSizeMap::iterator I = FnStackSize.begin(), E = FnStackSize.end();
>> + I != E; ++I) {
>> + AP.EmitLabelReference(I->first, 4, true);
>> + AP.OutStreamer.EmitIntValue(I->second, 4);
>> + }
>> +
>> // Num constants.
>> AP.OutStreamer.EmitIntValue(ConstPool.getNumConstants(), 4);
>>
>>
>> Modified: llvm/trunk/test/CodeGen/X86/anyregcc.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/anyregcc.ll?rev=200444&r1=200443&r2=200444&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/anyregcc.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/anyregcc.ll Wed Jan 29 21:06:14 2014
>> @@ -1,13 +1,31 @@
>> -; RUN: llc < %s -mtriple=x86_64-apple-darwin -disable-fp-elim | FileCheck %s
>> -; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mcpu=corei7 | FileCheck --check-prefix=SSE %s
>> -; RUN: llc < %s -march=x86-64 -mcpu=corei7-avx | FileCheck --check-prefix=AVX %s
>> +; RUN: llc < %s -mtriple=x86_64-apple-darwin -disable-fp-elim | FileCheck %s
>> +; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 -disable-fp-elim | FileCheck --check-prefix=SSE %s
>> +; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -disable-fp-elim | FileCheck --check-prefix=AVX %s
>>
>>
>> ; Stackmap Header: no constants - 6 callsites
>> -; CHECK-LABEL: .section __LLVM_STACKMAPS,__llvm_stackmaps
>> -; CHECK-NEXT: __LLVM_StackMaps:
>> +; CHECK-LABEL: .section __LLVM_STACKMAPS,__llvm_stackmaps
>> +; CHECK-NEXT: __LLVM_StackMaps:
>> ; Header
>> -; CHECK-NEXT: .long 0
>> +; CHECK-NEXT: .long 0
>> +; Num Functions
>> +; CHECK-NEXT: .long 8
>> +; CHECK-NEXT: .long _test
>> +; CHECK-NEXT: .long 8
>> +; CHECK-NEXT: .long _property_access1
>> +; CHECK-NEXT: .long 8
>> +; CHECK-NEXT: .long _property_access2
>> +; CHECK-NEXT: .long 24
>> +; CHECK-NEXT: .long _property_access3
>> +; CHECK-NEXT: .long 24
>> +; CHECK-NEXT: .long _anyreg_test1
>> +; CHECK-NEXT: .long 56
>> +; CHECK-NEXT: .long _anyreg_test2
>> +; CHECK-NEXT: .long 56
>> +; CHECK-NEXT: .long _patchpoint_spilldef
>> +; CHECK-NEXT: .long 56
>> +; CHECK-NEXT: .long _patchpoint_spillargs
>> +; CHECK-NEXT: .long 88
>> ; Num Constants
>> ; CHECK-NEXT: .long 0
>> ; Num Callsites
>> @@ -343,8 +361,8 @@ entry:
>> define anyregcc void @anyregcc1() {
>> entry:
>> ;SSE-LABEL: anyregcc1
>> -;SSE: pushq %rax
>> ;SSE: pushq %rbp
>> +;SSE: pushq %rax
>> ;SSE: pushq %r15
>> ;SSE: pushq %r14
>> ;SSE: pushq %r13
>> @@ -375,8 +393,8 @@ entry:
>> ;SSE-NEXT: movaps %xmm1
>> ;SSE-NEXT: movaps %xmm0
>> ;AVX-LABEL:anyregcc1
>> -;AVX: pushq %rax
>> ;AVX: pushq %rbp
>> +;AVX: pushq %rax
>> ;AVX: pushq %r15
>> ;AVX: pushq %r14
>> ;AVX: pushq %r13
>> @@ -390,22 +408,22 @@ entry:
>> ;AVX: pushq %rdx
>> ;AVX: pushq %rcx
>> ;AVX: pushq %rbx
>> -;AVX: vmovups %ymm15
>> -;AVX-NEXT: vmovups %ymm14
>> -;AVX-NEXT: vmovups %ymm13
>> -;AVX-NEXT: vmovups %ymm12
>> -;AVX-NEXT: vmovups %ymm11
>> -;AVX-NEXT: vmovups %ymm10
>> -;AVX-NEXT: vmovups %ymm9
>> -;AVX-NEXT: vmovups %ymm8
>> -;AVX-NEXT: vmovups %ymm7
>> -;AVX-NEXT: vmovups %ymm6
>> -;AVX-NEXT: vmovups %ymm5
>> -;AVX-NEXT: vmovups %ymm4
>> -;AVX-NEXT: vmovups %ymm3
>> -;AVX-NEXT: vmovups %ymm2
>> -;AVX-NEXT: vmovups %ymm1
>> -;AVX-NEXT: vmovups %ymm0
>> +;AVX: vmovaps %ymm15
>> +;AVX-NEXT: vmovaps %ymm14
>> +;AVX-NEXT: vmovaps %ymm13
>> +;AVX-NEXT: vmovaps %ymm12
>> +;AVX-NEXT: vmovaps %ymm11
>> +;AVX-NEXT: vmovaps %ymm10
>> +;AVX-NEXT: vmovaps %ymm9
>> +;AVX-NEXT: vmovaps %ymm8
>> +;AVX-NEXT: vmovaps %ymm7
>> +;AVX-NEXT: vmovaps %ymm6
>> +;AVX-NEXT: vmovaps %ymm5
>> +;AVX-NEXT: vmovaps %ymm4
>> +;AVX-NEXT: vmovaps %ymm3
>> +;AVX-NEXT: vmovaps %ymm2
>> +;AVX-NEXT: vmovaps %ymm1
>> +;AVX-NEXT: vmovaps %ymm0
>> call void asm sideeffect "", "~{rax},~{rbx},~{rcx},~{rdx},~{rsi},~{rdi},~{r8},~{r9},~{r10},~{r11},~{r12},~{r13},~{r14},~{r15},~{rbp},~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15}"()
>> ret void
>> }
>>
>> Modified: llvm/trunk/test/CodeGen/X86/stackmap-liveness.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/stackmap-liveness.ll?rev=200444&r1=200443&r2=200444&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/stackmap-liveness.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/stackmap-liveness.ll Wed Jan 29 21:06:14 2014
>> @@ -6,7 +6,13 @@
>>
>> ; CHECK-LABEL: .section __LLVM_STACKMAPS,__llvm_stackmaps
>> ; CHECK-NEXT: __LLVM_StackMaps:
>> -; CHECK-NEXT: .long 0
>> +; CHECK-NEXT: .long 0
>> +; Num Functions
>> +; CHECK-NEXT: .long 2
>> +; CHECK-NEXT: .long _stackmap_liveness
>> +; CHECK-NEXT: .long 8
>> +; CHECK-NEXT: .long _mixed_liveness
>> +; CHECK-NEXT: .long 8
>> ; Num LargeConstants
>> ; CHECK-NEXT: .long 0
>> ; Num Callsites
>>
>> Modified: llvm/trunk/test/CodeGen/X86/stackmap.ll
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/stackmap.ll?rev=200444&r1=200443&r2=200444&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/X86/stackmap.ll (original)
>> +++ llvm/trunk/test/CodeGen/X86/stackmap.ll Wed Jan 29 21:06:14 2014
>> @@ -4,7 +4,37 @@
>>
>> ; CHECK-LABEL: .section __LLVM_STACKMAPS,__llvm_stackmaps
>> ; CHECK-NEXT: __LLVM_StackMaps:
>> -; CHECK-NEXT: .long 0
>> +; CHECK-NEXT: .long 0
>> +; Num Functions
>> +; CHECK-NEXT: .long 14
>> +; CHECK-NEXT: .long _constantargs
>> +; CHECK-NEXT: .long 8
>> +; CHECK-NEXT: .long _osrinline
>> +; CHECK-NEXT: .long 24
>> +; CHECK-NEXT: .long _osrcold
>> +; CHECK-NEXT: .long 8
>> +; CHECK-NEXT: .long _propertyRead
>> +; CHECK-NEXT: .long 8
>> +; CHECK-NEXT: .long _propertyWrite
>> +; CHECK-NEXT: .long 8
>> +; CHECK-NEXT: .long _jsVoidCall
>> +; CHECK-NEXT: .long 8
>> +; CHECK-NEXT: .long _jsIntCall
>> +; CHECK-NEXT: .long 8
>> +; CHECK-NEXT: .long _spilledValue
>> +; CHECK-NEXT: .long 56
>> +; CHECK-NEXT: .long _spilledStackMapValue
>> +; CHECK-NEXT: .long 56
>> +; CHECK-NEXT: .long _spillSubReg
>> +; CHECK-NEXT: .long 56
>> +; CHECK-NEXT: .long _subRegOffset
>> +; CHECK-NEXT: .long 56
>> +; CHECK-NEXT: .long _liveConstant
>> +; CHECK-NEXT: .long 8
>> +; CHECK-NEXT: .long _directFrameIdx
>> +; CHECK-NEXT: .long 56
>> +; CHECK-NEXT: .long _longid
>> +; CHECK-NEXT: .long 8
>> ; Num LargeConstants
>> ; CHECK-NEXT: .long 3
>> ; CHECK-NEXT: .quad 2147483648
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list