mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-10 18:11:19 +00:00
47972afd10
We used to have a flag to enable module maps, and two more flags to enable implicit module maps. This is all redundant; we don't need any flag for enabling module maps in the abstract, and we don't usually have -fno- flags for -cc1. We now have just a single flag, -fimplicit-module-maps, that enables implicitly searching the file system for module map files and loading them. The driver interface is unchanged for now. We should probably rename -fmodule-maps to -fimplicit-module-maps at some point. llvm-svn: 239789
137 lines
5.4 KiB
C++
137 lines
5.4 KiB
C++
// RUN: rm -rf %t
|
|
// RUN: cd %S
|
|
//
|
|
// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \
|
|
// RUN: -v \
|
|
// RUN: -iquote Inputs/macro-ambiguity/a/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/a/system \
|
|
// RUN: -fno-implicit-modules \
|
|
// RUN: -fmodule-map-file-home-is-cwd \
|
|
// RUN: -emit-module -fmodule-name=a -o %t/a.pcm \
|
|
// RUN: Inputs/macro-ambiguity/module.modulemap
|
|
//
|
|
// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \
|
|
// RUN: -v \
|
|
// RUN: -iquote Inputs/macro-ambiguity/b/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/b/system \
|
|
// RUN: -fno-implicit-modules \
|
|
// RUN: -fmodule-map-file-home-is-cwd \
|
|
// RUN: -emit-module -fmodule-name=b -o %t/b.pcm \
|
|
// RUN: Inputs/macro-ambiguity/module.modulemap
|
|
//
|
|
// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \
|
|
// RUN: -v \
|
|
// RUN: -iquote Inputs/macro-ambiguity/c/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/c/system \
|
|
// RUN: -fno-implicit-modules \
|
|
// RUN: -fmodule-map-file-home-is-cwd \
|
|
// RUN: -emit-module -fmodule-name=c -o %t/c.pcm \
|
|
// RUN: Inputs/macro-ambiguity/module.modulemap
|
|
//
|
|
// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \
|
|
// RUN: -v \
|
|
// RUN: -iquote Inputs/macro-ambiguity/d/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/d/system \
|
|
// RUN: -fno-implicit-modules \
|
|
// RUN: -fmodule-map-file-home-is-cwd \
|
|
// RUN: -emit-module -fmodule-name=d -o %t/d.pcm \
|
|
// RUN: Inputs/macro-ambiguity/module.modulemap
|
|
//
|
|
// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \
|
|
// RUN: -v \
|
|
// RUN: -iquote Inputs/macro-ambiguity/a/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/a/system \
|
|
// RUN: -iquote Inputs/macro-ambiguity/b/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/b/system \
|
|
// RUN: -iquote Inputs/macro-ambiguity/c/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/c/system \
|
|
// RUN: -iquote Inputs/macro-ambiguity/d/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/d/system \
|
|
// RUN: -iquote Inputs/macro-ambiguity/e/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/e/system \
|
|
// RUN: -fno-implicit-modules \
|
|
// RUN: -fmodule-map-file-home-is-cwd \
|
|
// RUN: -fmodule-map-file=Inputs/macro-ambiguity/module.modulemap \
|
|
// RUN: -fmodule-file=%t/a.pcm \
|
|
// RUN: -fmodule-file=%t/b.pcm \
|
|
// RUN: -fmodule-file=%t/c.pcm \
|
|
// RUN: -fmodule-file=%t/d.pcm \
|
|
// RUN: -Wambiguous-macro -verify macro-ambiguity.cpp
|
|
//
|
|
// RUN: %clang_cc1 -fmodules -x c++ -fmodules-cache-path=%t \
|
|
// RUN: -v -fmodules-local-submodule-visibility \
|
|
// RUN: -iquote Inputs/macro-ambiguity/a/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/a/system \
|
|
// RUN: -iquote Inputs/macro-ambiguity/b/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/b/system \
|
|
// RUN: -iquote Inputs/macro-ambiguity/c/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/c/system \
|
|
// RUN: -iquote Inputs/macro-ambiguity/d/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/d/system \
|
|
// RUN: -iquote Inputs/macro-ambiguity/e/quote \
|
|
// RUN: -isystem Inputs/macro-ambiguity/e/system \
|
|
// RUN: -fno-implicit-modules \
|
|
// RUN: -fmodule-map-file-home-is-cwd \
|
|
// RUN: -fmodule-map-file=Inputs/macro-ambiguity/module.modulemap \
|
|
// RUN: -fmodule-file=%t/a.pcm \
|
|
// RUN: -fmodule-file=%t/b.pcm \
|
|
// RUN: -fmodule-file=%t/c.pcm \
|
|
// RUN: -fmodule-file=%t/d.pcm \
|
|
// RUN: -Wambiguous-macro -verify macro-ambiguity.cpp
|
|
|
|
// Include the textual headers first to maximize the ways in which things can
|
|
// become ambiguous.
|
|
#include "e_quote.h"
|
|
#include <e_system.h>
|
|
|
|
#include "a_quote.h"
|
|
#include <a_system.h>
|
|
#include "b_quote.h"
|
|
#include <b_system.h>
|
|
#include "c_quote.h"
|
|
#include <c_system.h>
|
|
#include "d_quote.h"
|
|
#include <d_system.h>
|
|
|
|
int test(int x) {
|
|
// We expect to get warnings for all of the quoted includes but none of the
|
|
// system includes here because the first module is a non-system module and
|
|
// the quote macros come from non-system-headers.
|
|
x = FOO1_QUOTE(x); // expected-warning {{ambiguous expansion of macro}}
|
|
// expected-note@Inputs/macro-ambiguity/c/quote/c_quote.h:4 {{expanding this definition}}
|
|
// expected-note@Inputs/macro-ambiguity/a/quote/a_quote.h:4 {{other definition}}
|
|
|
|
x = FOO1_SYSTEM(x);
|
|
|
|
x = BAR1_QUOTE(x); // expected-warning {{ambiguous expansion of macro}}
|
|
// expected-note@Inputs/macro-ambiguity/d/quote/d_quote.h:4 {{expanding this definition}}
|
|
// expected-note@Inputs/macro-ambiguity/a/quote/a_quote.h:5 {{other definition}}
|
|
|
|
x = BAR1_SYSTEM(x);
|
|
|
|
x = BAZ1_QUOTE(x); // expected-warning {{ambiguous expansion of macro}}
|
|
// expected-note@Inputs/macro-ambiguity/a/quote/a_quote.h:6 {{expanding this definition}}
|
|
// expected-note@Inputs/macro-ambiguity/e/quote/e_quote.h:4 {{other definition}}
|
|
|
|
x = BAZ1_SYSTEM(x);
|
|
|
|
// Here, we don't even warn on bar because in that cas both b and d are
|
|
// system modules and so the use of non-system headers is irrelevant.
|
|
x = FOO2_QUOTE(x); // expected-warning {{ambiguous expansion of macro}}
|
|
// expected-note@Inputs/macro-ambiguity/c/quote/c_quote.h:5 {{expanding this definition}}
|
|
// expected-note@Inputs/macro-ambiguity/b/quote/b_quote.h:4 {{other definition}}
|
|
|
|
x = FOO2_SYSTEM(x);
|
|
|
|
x = BAR2_QUOTE(x);
|
|
|
|
x = BAR2_SYSTEM(x);
|
|
|
|
x = BAZ2_QUOTE(x); // expected-warning {{ambiguous expansion of macro}}
|
|
// expected-note@Inputs/macro-ambiguity/b/quote/b_quote.h:6 {{expanding this definition}}
|
|
// expected-note@Inputs/macro-ambiguity/e/quote/e_quote.h:5 {{other definition}}
|
|
|
|
x = BAZ2_SYSTEM(x);
|
|
return x;
|
|
}
|