From e8066f00320852d82d29ad1d705c2decaced276e Mon Sep 17 00:00:00 2001 From: Paul Seyfert Date: Tue, 22 May 2018 17:41:39 +0200 Subject: [PATCH] imp files for Intel intrinsics Rules are based on the files' error messages when included directly. These differ for different compilers, hence separate files for gcc and clang. Newer compiler versions can include additional header files for intrinsics, hence version specification in filenames - mostly an issue for forwards compatibility. Backwards compatibility should work out for most cases. Rules for backwards compatibility to some gcc versions included (tested versions listed in the file). When two possible public headers are suggested, both are allowed and it's left up to the iwyu standard behaviour which to suggest. --- clang-6.intrinsics.imp | 59 +++++++++++++++++++++++++++++++++++++++++ gcc-8.intrinsics.imp | 60 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 clang-6.intrinsics.imp create mode 100644 gcc-8.intrinsics.imp diff --git a/clang-6.intrinsics.imp b/clang-6.intrinsics.imp new file mode 100644 index 0000000..a5f5254 --- /dev/null +++ b/clang-6.intrinsics.imp @@ -0,0 +1,59 @@ +# These mappings based on #error pragmas in the header files below in clang 6.0.0 +[ + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, +# files that list two possible public headers + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, +] diff --git a/gcc-8.intrinsics.imp b/gcc-8.intrinsics.imp new file mode 100644 index 0000000..80b3edd --- /dev/null +++ b/gcc-8.intrinsics.imp @@ -0,0 +1,60 @@ +# These mappings based on #error pragmas in the header files below in gcc 8.1.0 +# backwards compatibility tested on gcc 4.8.4, 4.9.3, 6.2.0, 7.3.0 +[ + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, +# files that list two possible public headers + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, + { include: ["", private, "", public ] }, +# one rule for backwards compatibility with gcc 6.1 and 6.2 + { include: ["", private, "", public ] }, +]