llvm-project/clang/test/Modules/merge-target-features.cpp
Richard Smith 95dc57a611 [modules] Allow the error when explicitly loading an incompatible module file
via -fmodule-file= to be turned off; in that case, just include the relevant
files textually. This allows module files to be unconditionally passed to all
compile actions via CXXFLAGS, and to be ignored for rules that specify custom
incompatible flags.

llvm-svn: 250577
2015-10-16 23:20:19 +00:00

66 lines
2.6 KiB
C++

// RUN: rm -rf %t
// RUN: cd %S
// REQUIRES: x86-registered-target
// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \
// RUN: -iquote Inputs/merge-target-features \
// RUN: -fno-implicit-modules \
// RUN: -fmodule-map-file-home-is-cwd \
// RUN: -emit-module -fmodule-name=foo -o %t/foo.pcm \
// RUN: -triple i386-unknown-unknown \
// RUN: -target-cpu i386 -target-feature +sse2 \
// RUN: Inputs/merge-target-features/module.modulemap
//
// RUN: not %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \
// RUN: -iquote Inputs/merge-target-features \
// RUN: -fno-implicit-modules \
// RUN: -fmodule-map-file-home-is-cwd \
// RUN: -fmodule-map-file=Inputs/merge-target-features/module.modulemap \
// RUN: -fmodule-file=%t/foo.pcm \
// RUN: -triple i386-unknown-unknown \
// RUN: -target-cpu i386 \
// RUN: -fsyntax-only merge-target-features.cpp 2>&1 \
// RUN: | FileCheck --check-prefix=SUBSET %s
// SUBSET: error: {{.*}} configuration mismatch
//
// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \
// RUN: -iquote Inputs/merge-target-features \
// RUN: -fno-implicit-modules \
// RUN: -fmodule-map-file-home-is-cwd \
// RUN: -fmodule-map-file=Inputs/merge-target-features/module.modulemap \
// RUN: -fmodule-file=%t/foo.pcm \
// RUN: -triple i386-unknown-unknown \
// RUN: -target-cpu i386 -target-feature +sse2 \
// RUN: -fsyntax-only merge-target-features.cpp 2>&1 \
// RUN: | FileCheck --allow-empty --check-prefix=SAME %s
// SAME-NOT: error:
//
// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \
// RUN: -iquote Inputs/merge-target-features \
// RUN: -fno-implicit-modules \
// RUN: -fmodule-map-file-home-is-cwd \
// RUN: -fmodule-map-file=Inputs/merge-target-features/module.modulemap \
// RUN: -fmodule-file=%t/foo.pcm \
// RUN: -triple i386-unknown-unknown \
// RUN: -target-cpu i386 -target-feature +sse2 -target-feature +sse3 \
// RUN: -fsyntax-only merge-target-features.cpp 2>&1 \
// RUN: | FileCheck --allow-empty --check-prefix=SUPERSET %s
// SUPERSET-NOT: error:
//
// RUN: not %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \
// RUN: -iquote Inputs/merge-target-features \
// RUN: -fno-implicit-modules \
// RUN: -fmodule-map-file-home-is-cwd \
// RUN: -fmodule-map-file=Inputs/merge-target-features/module.modulemap \
// RUN: -fmodule-file=%t/foo.pcm \
// RUN: -triple i386-unknown-unknown \
// RUN: -target-cpu i386 -target-feature +cx16 \
// RUN: -fsyntax-only merge-target-features.cpp 2>&1 \
// RUN: | FileCheck --check-prefix=MISMATCH %s
// MISMATCH: error: {{.*}} configuration mismatch
#include "foo.h"
int test(int x) {
return foo(x);
}