69 lines · cpp
1// RUN: rm -rf %t2// RUN: cd %S3// REQUIRES: x86-registered-target4// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \5// RUN: -iquote Inputs/merge-target-features \6// RUN: -fno-implicit-modules \7// RUN: -fmodule-map-file-home-is-cwd \8// RUN: -emit-module -fmodule-name=foo -o %t/foo.pcm \9// RUN: -triple i386-unknown-unknown \10// RUN: -target-cpu i386 -target-feature +sse2 \11// RUN: Inputs/merge-target-features/module.modulemap12//13// RUN: not %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \14// RUN: -iquote Inputs/merge-target-features \15// RUN: -fno-implicit-modules \16// RUN: -fmodule-map-file-home-is-cwd \17// RUN: -fmodule-map-file=Inputs/merge-target-features/module.modulemap \18// RUN: -fmodule-file=%t/foo.pcm \19// RUN: -triple i386-unknown-unknown \20// RUN: -target-cpu i386 \21// RUN: -fsyntax-only merge-target-features.cpp 2>&1 \22// RUN: | FileCheck --check-prefix=SUBSET --implicit-check-not=error: %s23// SUBSET: error: precompiled file '{{.*}}foo.pcm' was compiled with the target feature '+sse2' but the current translation unit is not24// SUBSET: error: {{.*}} configuration mismatch25//26// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \27// RUN: -iquote Inputs/merge-target-features \28// RUN: -fno-implicit-modules \29// RUN: -fmodule-map-file-home-is-cwd \30// RUN: -fmodule-map-file=Inputs/merge-target-features/module.modulemap \31// RUN: -fmodule-file=%t/foo.pcm \32// RUN: -triple i386-unknown-unknown \33// RUN: -target-cpu i386 -target-feature +sse2 \34// RUN: -fsyntax-only merge-target-features.cpp 2>&1 \35// RUN: | FileCheck --allow-empty --check-prefix=SAME %s36// SAME-NOT: error:37//38// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \39// RUN: -iquote Inputs/merge-target-features \40// RUN: -fno-implicit-modules \41// RUN: -fmodule-map-file-home-is-cwd \42// RUN: -fmodule-map-file=Inputs/merge-target-features/module.modulemap \43// RUN: -fmodule-file=%t/foo.pcm \44// RUN: -triple i386-unknown-unknown \45// RUN: -target-cpu i386 -target-feature +sse2 -target-feature +sse3 \46// RUN: -fsyntax-only merge-target-features.cpp 2>&1 \47// RUN: | FileCheck --allow-empty --check-prefix=SUPERSET %s48// SUPERSET-NOT: error:49//50// RUN: not %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \51// RUN: -iquote Inputs/merge-target-features \52// RUN: -fno-implicit-modules \53// RUN: -fmodule-map-file-home-is-cwd \54// RUN: -fmodule-map-file=Inputs/merge-target-features/module.modulemap \55// RUN: -fmodule-file=%t/foo.pcm \56// RUN: -triple i386-unknown-unknown \57// RUN: -target-cpu i386 -target-feature +cx16 \58// RUN: -fsyntax-only merge-target-features.cpp 2>&1 \59// RUN: | FileCheck --check-prefix=MISMATCH --implicit-check-not=error: %s60// MISMATCH: error: precompiled file '{{.*}}foo.pcm' was compiled with the target feature '+sse2' but the current translation unit is not61// MISMATCH: error: current translation unit is compiled with the target feature '+cx16' but the precompiled file '{{.*}}foo.pcm' was not62// MISMATCH: error: {{.*}} configuration mismatch63 64#include "foo.h"65 66int test(int x) {67 return foo(x);68}69