1275a55cbSDavid Blaikie // RUN: rm -rf %t
2e78cb1f2SReid Kleckner // RUN: %clang_cc1 -triple %itanium_abi_triple -fmodules -fmodules-cache-path=%t %s -emit-llvm -o - | FileCheck %s
3275a55cbSDavid Blaikie 
4*dd0fe187SDavid Blaikie // CHECK: @{{.*var.*}} = {{.*}} %union.union_type { i8 1 },
5275a55cbSDavid Blaikie 
6275a55cbSDavid Blaikie #pragma clang module build bar
7275a55cbSDavid Blaikie module bar {
8275a55cbSDavid Blaikie   header "bar.h" { size 40 mtime 0 }
9275a55cbSDavid Blaikie   export *
10275a55cbSDavid Blaikie }
11275a55cbSDavid Blaikie #pragma clang module contents
12275a55cbSDavid Blaikie #pragma clang module begin bar
13275a55cbSDavid Blaikie union union_type {
14275a55cbSDavid Blaikie   char h{1};
15275a55cbSDavid Blaikie };
16275a55cbSDavid Blaikie #pragma clang module end
17275a55cbSDavid Blaikie #pragma clang module endbuild
18275a55cbSDavid Blaikie #pragma clang module build foo
19275a55cbSDavid Blaikie module foo {
20275a55cbSDavid Blaikie   header "foo.h" { size 97 mtime 0 }
21275a55cbSDavid Blaikie   export *
22275a55cbSDavid Blaikie }
23275a55cbSDavid Blaikie #pragma clang module contents
24275a55cbSDavid Blaikie #pragma clang module begin foo
25275a55cbSDavid Blaikie union union_type {
26275a55cbSDavid Blaikie   char h{1};
27275a55cbSDavid Blaikie };
28275a55cbSDavid Blaikie #pragma clang module import bar
29275a55cbSDavid Blaikie template<typename T>
30275a55cbSDavid Blaikie union_type var;
31275a55cbSDavid Blaikie #pragma clang module end
32275a55cbSDavid Blaikie #pragma clang module endbuild
33275a55cbSDavid Blaikie #pragma clang module import foo
main()34275a55cbSDavid Blaikie int main() {
35275a55cbSDavid Blaikie   (void)&var<int>;
36275a55cbSDavid Blaikie }
37