// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fclang-abi-compat=15 -DCLANG_ABI_COMPAT=15 %s -emit-llvm -disable-llvm-passes -o - | FileCheck %s // RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -emit-llvm -disable-llvm-passes -o - | FileCheck %s --check-prefixes=CHECK,AFTER-15 // CHECK: %struct.S = type { i8 } // CHECK: @_Z2ggiRi // CHECK: @_Z1gIiJEERiPT_DpT0_ template int &g(T *, U...); template void g(T); template struct S; template struct S {}; void gg(int i, int &r) { r = g(&i); S a; } // CHECK: @_Z1hIJiEEvDpPT_ template void h(T*...) {} template void h(const T&) {} template void h(int*); #if !defined(CLANG_ABI_COMPAT) // AFTER-15: @_Z1fIiJEEvPT_DpT0_ template void f(T*, U...){} template void f(T){} template void f(int*); template struct A; template struct A {}; template struct A; template struct A; #endif