blob: a469b7cfb0c777d8e47f14060c9c7b1ec2eb75d3 [file] [edit]
// REQUIRES: spirv-registered-target
//
// Verify that __spirv_event_t round trips through a C++20 module.
// RUN: rm -rf %t
// RUN: split-file %s %t
// RUN: cd %t
// RUN: %clang_cc1 -std=c++20 -triple spirv64 %t/EventMod.cppm -emit-module-interface -o %t/EventMod.pcm
// RUN: %clang_cc1 -std=c++20 -triple spirv64 %t/UseEventMod.cpp -fmodule-file=EventMod=%t/EventMod.pcm -ast-dump-all | FileCheck %t/UseEventMod.cpp
// expected-no-diagnostics
//--- EventMod.cppm
export module EventMod;
export __spirv_event_t getEvent();
export void useEvent(__spirv_event_t e);
//--- UseEventMod.cpp
import EventMod;
// Check the declarations deserialized from the module (not the uses in test()).
// CHECK: FunctionDecl 0x{{.*}} imported in EventMod {{.*}} getEvent '__spirv_event_t ()'
// CHECK: FunctionDecl 0x{{.*}} imported in EventMod {{.*}} useEvent 'void (__spirv_event_t)'
// CHECK: ParmVarDecl 0x{{.*}} imported in EventMod {{.*}} e '__spirv_event_t'
void test() {
__spirv_event_t e = getEvent();
useEvent(e);
}