[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / clang / test / CodeGen / incomplete-function-type-function-addrspace.c
blobcce6059d7fe10b907483ceb33cbff84c6f225a40
1 // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --function-signature
2 // REQUIRES: avr-registered-target
3 // RUN: %clang_cc1 -triple avr-- -emit-llvm -o - %s | FileCheck %s
5 // Copy of incomplete-function-type-2.c run with AVR.
7 // Make sure the address space of the function is respected for incomplete
8 // functions.
10 struct test10_B;
11 typedef struct test10_B test10_F3(double);
12 void test10_foo(test10_F3 p1);
13 struct test10_B test10_b(double);
14 // CHECK-LABEL: define {{[^@]+}}@test10_bar
15 // CHECK-SAME: () addrspace(1) #[[ATTR0:[0-9]+]] {
16 // CHECK-NEXT: entry:
17 // CHECK-NEXT: call addrspace(1) void @test10_foo(ptr addrspace(1) noundef @test10_b)
18 // CHECK-NEXT: ret void
20 void test10_bar(void) {
21 test10_foo(test10_b);
23 struct test10_B {};
24 // CHECK-LABEL: define {{[^@]+}}@test10_foo
25 // CHECK-SAME: (ptr addrspace(1) noundef [[P1:%.*]]) addrspace(1) #[[ATTR0]] {
26 // CHECK-NEXT: entry:
27 // CHECK-NEXT: [[P1_ADDR:%.*]] = alloca ptr addrspace(1), align 1
28 // CHECK-NEXT: [[AGG_TMP:%.*]] = alloca [[STRUCT_TEST10_B:%.*]], align 1
29 // CHECK-NEXT: store ptr addrspace(1) [[P1]], ptr [[P1_ADDR]], align 1
30 // CHECK-NEXT: [[TMP0:%.*]] = load ptr addrspace(1), ptr [[P1_ADDR]], align 1
31 // CHECK-NEXT: [[CALL:%.*]] = call addrspace(1) [[STRUCT_TEST10_B]] [[TMP0]](float noundef 0.000000e+00)
32 // CHECK-NEXT: ret void
34 void test10_foo(test10_F3 p1)
36 p1(0.0);