| ; RUN: llc -O0 %s -o - | FileCheck %s |
| |
| target triple = "spirv32-unknown-unknown" |
| |
| ; Debug info: |
| ; CHECK: OpName [[FOO:%.+]] "foo" |
| |
| ; Types: |
| ; CHECK: [[VOID:%.+]] = OpTypeVoid |
| ; CHECK: [[FN:%.+]] = OpTypeFunction [[VOID]] |
| |
| ; Functions: |
| ; CHECK: [[FOO]] = OpFunction [[VOID]] None [[FN]] |
| ; CHECK-NOT: OpFunctionParameter |
| ; NOTE: In 2.4, it isn't explicitly written that a function always has a least |
| ; one block. In fact, 2.4.11 seems to imply that there are at least two |
| ; blocks in functions with a body, but that doesn't make much sense. |
| ; However, in order to distinguish between function declaration and |
| ; definition, a function needs at least one block, hence why this test |
| ; expects one OpLabel + OpReturn. |
| ; CHECK: OpLabel |
| ; CHECK: OpReturn |
| ; CHECK-NOT: OpLabel |
| ; CHECK: OpFunctionEnd |
| define void @foo() { |
| ret void |
| } |