standard_testfile .cc
-if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug c++}]} {
+set flags [list debug c++]
+set clang_used false
+if { [test_compiler_info "clang-*" "c++"] } {
+ set clang_used true
+ if { [gcc_major_version "clang-*" "c++"] >= 11} {
+ lappend flags additional_flags=-Wno-non-c-typedef-for-linkage
+ }
+}
+
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile $flags]} {
return -1
}
# Classes with typedefs of different access.
+ # Clang does not add access information for typedefs in classes.
+ # More information on: https://github.com/llvm/llvm-project/issues/57608
+ if {$::clang_used} {
+ setup_xfail "clang 57608" *-*-*
+ }
+
cp_test_ptype_class \
"class class_with_typedefs" "" "class" "class_with_typedefs" \
{
{ typedef private "typedef int private_int;" }
}
+ if {$::clang_used} {
+ setup_xfail "clang 57608" *-*-*
+ }
+
cp_test_ptype_class \
"class class_with_public_typedef" "" "class" \
"class_with_public_typedef" {
{ field public "class_with_public_typedef::INT b;" }
{ typedef public "typedef int INT;" }
}
+
+ if {$::clang_used} {
+ setup_xfail "clang 57608" *-*-*
+ }
+
cp_test_ptype_class \
"class class_with_protected_typedef" "" "class" \
"class_with_protected_typedef" {
{ field protected "class_with_protected_typedef::INT b;" }
{ typedef protected "typedef int INT;" }
}
+
+ if {$::clang_used} {
+ setup_xfail "clang 57608" *-*-*
+ }
+
cp_test_ptype_class \
"struct struct_with_protected_typedef" "" "struct" \
"struct_with_protected_typedef" {
{ field protected "struct_with_protected_typedef::INT b;" }
{ typedef protected "typedef int INT;" }
}
+
+ if {$::clang_used} {
+ setup_xfail "clang 57608" *-*-*
+ }
+
cp_test_ptype_class \
"struct struct_with_private_typedef" "" "struct" \
"struct_with_private_typedef" {