Home | History | Annotate | Download | only in Generic
      1 # RUN: llc -run-pass none -o - %s | FileCheck %s
      2 # This test ensures that the MIR parser parses machine frame info properties
      3 # correctly.
      4 
      5 --- |
      6 
      7   define i32 @test(i32 %a) {
      8   entry:
      9     %b = alloca i32
     10     store i32 %a, i32* %b
     11     %c = load i32, i32* %b
     12     ret i32 %c
     13   }
     14 
     15   define i32 @test2(i32 %a) {
     16   entry:
     17     %b = alloca i32
     18     store i32 %a, i32* %b
     19     %c = load i32, i32* %b
     20     ret i32 %c
     21   }
     22 
     23 ...
     24 ---
     25 name:            test
     26 tracksRegLiveness: true
     27 
     28 # CHECK: frameInfo:
     29 # CHECK-NEXT: isFrameAddressTaken: false
     30 # CHECK-NEXT: isReturnAddressTaken: false
     31 # CHECK-NEXT: hasStackMap: false
     32 # CHECK-NEXT: hasPatchPoint: false
     33 # CHECK-NEXT: stackSize: 0
     34 # CHECK-NEXT: offsetAdjustment: 0
     35 # Note: max alignment can be target specific when printed.
     36 # CHECK-NEXT: maxAlignment:
     37 # CHECK-NEXT: adjustsStack: false
     38 # CHECK-NEXT: hasCalls: false
     39 # CHECK-NEXT: stackProtector:  ''
     40 # CHECK-NEXT: maxCallFrameSize:
     41 # CHECK-NEXT: hasOpaqueSPAdjustment: false
     42 # CHECK-NEXT: hasVAStart: false
     43 # CHECK-NEXT: hasMustTailInVarArgFunc: false
     44 # CHECK-NEXT: localFrameSize: 0
     45 # CHECK-NEXT: savePoint:       ''
     46 # CHECK-NEXT: restorePoint:    ''
     47 # CHECK: body
     48 frameInfo:
     49   maxAlignment:    4
     50 body: |
     51   bb.0.entry:
     52 ...
     53 ---
     54 name:            test2
     55 tracksRegLiveness: true
     56 
     57 # CHECK: test2
     58 # CHECK: frameInfo:
     59 # CHECK-NEXT: isFrameAddressTaken: true
     60 # CHECK-NEXT: isReturnAddressTaken: true
     61 # CHECK-NEXT: hasStackMap: true
     62 # CHECK-NEXT: hasPatchPoint: true
     63 # CHECK-NEXT: stackSize: 4
     64 # CHECK-NEXT: offsetAdjustment: 4
     65 # Note: max alignment can be target specific when printed.
     66 # CHECK-NEXT: maxAlignment:
     67 # CHECK-NEXT: adjustsStack: true
     68 # CHECK-NEXT: hasCalls: true
     69 # CHECK-NEXT: stackProtector:  ''
     70 # CHECK-NEXT: maxCallFrameSize: 4
     71 # CHECK-NEXT: hasOpaqueSPAdjustment: true
     72 # CHECK-NEXT: hasVAStart: true
     73 # CHECK-NEXT: hasMustTailInVarArgFunc: true
     74 # CHECK: body
     75 frameInfo:
     76   isFrameAddressTaken: true
     77   isReturnAddressTaken: true
     78   hasStackMap:     true
     79   hasPatchPoint:   true
     80   stackSize:       4
     81   offsetAdjustment: 4
     82   maxAlignment:    4
     83   adjustsStack:    true
     84   hasCalls:        true
     85   maxCallFrameSize: 4
     86   hasOpaqueSPAdjustment: true
     87   hasVAStart:      true
     88   hasMustTailInVarArgFunc: true
     89   localFrameSize: 256
     90 body: |
     91   bb.0.entry:
     92 ...
     93 
     94