for (const auto &riscv_ext_info : riscv_ext_infos)
{
const auto &ext_info = riscv_ext_info.second;
- if (ext_info.check_opts (opts) && !ext_info.check_opts (subset))
+ if (!ext_info.check_opts (opts) && ext_info.check_opts (subset))
return false;
}
return true;
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-einline-details" } */
+
+#include "riscv_vector.h"
+int
+__attribute__((target("arch=+v")))
+foo (){
+ return __riscv_vsetvl_e8m8 (100);
+}
+
+
+int bar(){
+ return foo();
+}
+
+/* { dg-final { scan-tree-dump {not inlinable: bar/\d+ -> foo/\d+, target specific option mismatch} "einline" } } */
+/* { dg-final { scan-tree-dump-not {\(inlined\)} "einline" } } */
+/* { dg-skip-if "" { *-*-* } {"-O0" "-O1" "-Og" ""} } */
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-einline-details" } */
+
+#include "riscv_vector.h"
+int
+__attribute__((target("arch=+v")))
+foo (){
+ return __riscv_vsetvl_e8m8 (100);
+}
+
+
+int
+__attribute__((target("arch=+zve32x")))
+bar(){
+ return foo();
+}
+
+/* { dg-final { scan-tree-dump {not inlinable: bar/\d+ -> foo/\d+, target specific option mismatch} "einline" } } */
+/* { dg-final { scan-tree-dump-not {\(inlined\)} "einline" } } */
+/* { dg-skip-if "" { *-*-* } {"-O0" "-O1" "-Og" ""} } */
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-einline-details" } */
+
+#include "riscv_vector.h"
+int
+__attribute__((target("arch=+zve32x")))
+foo (){
+ return __riscv_vsetvl_e8m8 (100);
+}
+
+
+int
+__attribute__((target("arch=+v")))
+bar(){
+ return foo();
+}
+
+/* { dg-final { scan-tree-dump {Inlining foo/\d+ into bar/\d+} "einline" } } */
+/* { dg-skip-if "" { *-*-* } {"-O0" "-O1" "-Og" ""} } */
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-march=rv64gc -mabi=lp64d -fdump-tree-einline-details" } */
+
+#include "riscv_vector.h"
+int
+__attribute__((target("arch=+v,+zvl256b")))
+foo (){
+ return __riscv_vsetvl_e8m8 (100);
+}
+
+
+int
+__attribute__((target("arch=+v")))
+bar(){
+ return foo();
+}
+
+/* { dg-final { scan-tree-dump {not inlinable: bar/\d+ -> foo/\d+, target specific option mismatch} "einline" } } */
+/* { dg-final { scan-tree-dump-not {\(inlined\)} "einline" } } */
+/* { dg-skip-if "" { *-*-* } {"-O0" "-O1" "-Og" ""} } */
--- /dev/null
+/* Wrapper of riscv_vector.h, prevent riscv_vector.h including stdint.h from
+ C library, that might cause problem on testing RV32 related testcase when
+ we disable multilib. */
+#ifndef _RISCV_VECTOR_WRAP_H
+
+#define _GCC_WRAP_STDINT_H
+#include "stdint-gcc.h"
+#include_next <riscv_vector.h>
+#define _RISCV_VECTOR_WRAP_H
+
+#endif