// Tests that the declaration won't get emitted after being merged.
//
// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: split-file %s %t
//
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple %t/A.cppm -emit-module-interface -o %t/A.pcm
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple %t/B.cppm -emit-module-interface -o %t/B.pcm \
// RUN:     -fprebuilt-module-path=%t
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple %t/B.pcm -emit-llvm -o - \
// RUN:     -fprebuilt-module-path=%t | FileCheck %t/B.cppm

// Test again with reduced BMI. Note that we need to generate full BMI for B.cppm
// since it is required to generate backend codes.
// RUN: rm %t/A.pcm %t/B.pcm
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple %t/A.cppm -emit-reduced-module-interface -o %t/A.pcm
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple %t/B.cppm -emit-module-interface -o %t/B.pcm \
// RUN:     -fprebuilt-module-path=%t
// RUN: %clang_cc1 -std=c++20 -triple %itanium_abi_triple %t/B.pcm -emit-llvm -o - \
// RUN:     -fprebuilt-module-path=%t | FileCheck %t/B.cppm


//--- foo.h

template <class T>
class foo {
public:
    T value;
    T GetValue() { return value; }
};

template class foo<int>;

//--- A.cppm
module;
#include "foo.h"
export module A;
export using ::foo;

//--- B.cppm
module;
#include "foo.h"
export module B;
import A;
export using ::foo;
export int B() {
    foo<int> f;
    return f.GetValue();
}

// CHECK-NOT: define{{.*}}@_ZN3fooIiE8GetValueEv
