From c9e0cd499b7dc39efee372074c329bad9f98fc23 Mon Sep 17 00:00:00 2001 From: "Larsen, Steffen" Date: Tue, 28 Oct 2025 08:17:53 -0700 Subject: [PATCH 1/3] [clang] Remove invalid cases from add_ir_attributes_* AST merge test This commit removes a set of test cases for invalid uses of the add_ir_attributes_* attributes in the merging test checking the generated AST. Signed-off-by: Larsen, Steffen --- .../AST/ast-attr-add-ir-attributes-merge.cpp | 420 +----------------- 1 file changed, 4 insertions(+), 416 deletions(-) diff --git a/clang/test/AST/ast-attr-add-ir-attributes-merge.cpp b/clang/test/AST/ast-attr-add-ir-attributes-merge.cpp index 235eb34b3c66b..da940ace68002 100644 --- a/clang/test/AST/ast-attr-add-ir-attributes-merge.cpp +++ b/clang/test/AST/ast-attr-add-ir-attributes-merge.cpp @@ -4,7 +4,6 @@ // redeclarations. // CHECK: FunctionDecl [[FunctionRedecl1ID1:0x[0-9a-f]+]] {{.*}} FunctionRedecl1 'void ()' -// CHECK-NEXT: FunctionDecl [[FunctionRedecl1ID2:0x[0-9a-f]+]] prev [[FunctionRedecl1ID1]] {{.*}} FunctionRedecl1 'void ()' // CHECK-NEXT: SYCLAddIRAttributesFunctionAttr // CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue // CHECK-NEXT: value: LValue @@ -18,7 +17,7 @@ // CHECK-NEXT: ConstantExpr {{.*}} 'bool' // CHECK-NEXT: value: Int 1 // CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: FunctionDecl [[FunctionRedecl1ID3:0x[0-9a-f]+]] prev [[FunctionRedecl1ID2]] {{.*}} FunctionRedecl1 'void ()' +// CHECK-NEXT: FunctionDecl {{.*}} prev [[FunctionRedecl1ID1]] {{.*}} FunctionRedecl1 'void ()' // CHECK-NEXT: SYCLAddIRAttributesFunctionAttr // CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue // CHECK-NEXT: value: LValue @@ -32,209 +31,10 @@ // CHECK-NEXT: ConstantExpr {{.*}} 'bool' // CHECK-NEXT: value: Int 1 // CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: FunctionDecl [[FunctionRedecl1ID4:0x[0-9a-f]+]] prev [[FunctionRedecl1ID3]] {{.*}} FunctionRedecl1 'void ()' -// CHECK-NEXT: SYCLAddIRAttributesFunctionAttr -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: FunctionDecl [[FunctionRedecl1ID5:0x[0-9a-f]+]] prev [[FunctionRedecl1ID4]] {{.*}} FunctionRedecl1 'void ()' -// CHECK-NEXT: SYCLAddIRAttributesFunctionAttr -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 0 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' false -// CHECK-NEXT: FunctionDecl {{.*}} prev [[FunctionRedecl1ID5]] {{.*}} FunctionRedecl1 'void ()' -// CHECK-NEXT: CompoundStmt -// CHECK-NEXT: SYCLAddIRAttributesFunctionAttr -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr3" -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 0 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' false -void FunctionRedecl1(); -[[__sycl_detail__::add_ir_attributes_function("Attr1", "Attr2", 1, true)]] void FunctionRedecl1(); [[__sycl_detail__::add_ir_attributes_function("Attr1", "Attr2", 1, true)]] void FunctionRedecl1(); -[[__sycl_detail__::add_ir_attributes_function("Attr2", "Attr1", true, 1)]] void FunctionRedecl1(); -[[__sycl_detail__::add_ir_attributes_function("Attr1", "Attr2", 1, false)]] void FunctionRedecl1(); -[[__sycl_detail__::add_ir_attributes_function("Attr3", false)]] void FunctionRedecl1(){}; - -// CHECK: FunctionDecl [[FunctionRedecl2ID1:0x[0-9a-f]+]] {{.*}} FunctionRedecl2 'void ()' -// CHECK-NEXT: SYCLAddIRAttributesFunctionAttr -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: FunctionDecl {{.*}} prev [[FunctionRedecl2ID1]] {{.*}} FunctionRedecl2 'void ()' -// CHECK-NEXT: SYCLAddIRAttributesFunctionAttr -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -[[__sycl_detail__::add_ir_attributes_function("Attr1", "Attr2", 1, true)]] void FunctionRedecl2(); -void FunctionRedecl2(); - -// CHECK: FunctionDecl [[FunctionRedecl3ID1:0x[0-9a-f]+]] {{.*}} FunctionRedecl3 'void ()' -// CHECK-NEXT: FunctionDecl [[FunctionRedecl3ID2:0x[0-9a-f]+]] prev [[FunctionRedecl3ID1]] {{.*}} FunctionRedecl3 'void ()' -// CHECK-NEXT: SYCLAddIRAttributesFunctionAttr -// CHECK-NEXT: InitListExpr {{.*}} 'void' -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr3" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: FunctionDecl [[FunctionRedecl3ID3:0x[0-9a-f]+]] prev [[FunctionRedecl3ID2]] {{.*}} FunctionRedecl3 'void ()' -// CHECK-NEXT: SYCLAddIRAttributesFunctionAttr -// CHECK-NEXT: InitListExpr {{.*}} 'void' -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr3" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: FunctionDecl [[FunctionRedecl3ID4:0x[0-9a-f]+]] prev [[FunctionRedecl3ID3]] {{.*}} FunctionRedecl3 'void ()' -// CHECK-NEXT: SYCLAddIRAttributesFunctionAttr -// CHECK-NEXT: InitListExpr {{.*}} 'void' -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr3" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: FunctionDecl [[FunctionRedecl3ID5:0x[0-9a-f]+]] prev [[FunctionRedecl3ID4]] {{.*}} FunctionRedecl3 'void ()' -// CHECK-NEXT: SYCLAddIRAttributesFunctionAttr -// CHECK-NEXT: InitListExpr {{.*}} 'void' -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr3" -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: FunctionDecl [[FunctionRedecl3ID6:0x[0-9a-f]+]] prev [[FunctionRedecl3ID5]] {{.*}} FunctionRedecl3 'void ()' -// CHECK-NEXT: SYCLAddIRAttributesFunctionAttr -// CHECK-NEXT: InitListExpr {{.*}} 'void' -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr3" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 0 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' false -// CHECK-NEXT: FunctionDecl [[FunctionRedecl3ID7:0x[0-9a-f]+]] prev [[FunctionRedecl3ID6]] {{.*}} FunctionRedecl3 'void ()' -// CHECK-NEXT: SYCLAddIRAttributesFunctionAttr -// CHECK-NEXT: InitListExpr {{.*}} 'void' -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: FunctionDecl {{.*}} prev [[FunctionRedecl3ID7]] {{.*}} FunctionRedecl3 'void ()' -// CHECK-NEXT: CompoundStmt -// CHECK-NEXT: SYCLAddIRAttributesFunctionAttr -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -void FunctionRedecl3(); -[[__sycl_detail__::add_ir_attributes_function({"Attr1", "Attr3"}, "Attr1", "Attr2", 1, true)]] void FunctionRedecl3(); -[[__sycl_detail__::add_ir_attributes_function({"Attr1", "Attr3"}, "Attr1", "Attr2", 1, true)]] void FunctionRedecl3(); -[[__sycl_detail__::add_ir_attributes_function({"Attr1", "Attr3"}, "Attr2", "Attr1", true, 1)]] void FunctionRedecl3(); -[[__sycl_detail__::add_ir_attributes_function({"Attr3", "Attr1"}, "Attr1", "Attr2", 1, true)]] void FunctionRedecl3(); -[[__sycl_detail__::add_ir_attributes_function({"Attr1", "Attr3"}, "Attr1", "Attr2", 1, false)]] void FunctionRedecl3(); -[[__sycl_detail__::add_ir_attributes_function({"Attr1"}, "Attr1", "Attr2", 1, true)]] void FunctionRedecl3(); -[[__sycl_detail__::add_ir_attributes_function("Attr1", "Attr2", 1, true)]] void FunctionRedecl3(){}; +void FunctionRedecl1(); // CHECK: CXXRecordDecl [[GlobalVarStructRedecl1ID1:0x[0-9a-f]+]] {{.*}} struct GlobalVarStructRedecl1 -// CHECK-NEXT: CXXRecordDecl [[GlobalVarStructRedecl1ID2:0x[0-9a-f]+]] prev [[GlobalVarStructRedecl1ID1]] {{.*}} struct GlobalVarStructRedecl1 // CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr // CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue // CHECK-NEXT: value: LValue @@ -248,7 +48,7 @@ void FunctionRedecl3(); // CHECK-NEXT: ConstantExpr {{.*}} 'bool' // CHECK-NEXT: value: Int 1 // CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: CXXRecordDecl [[GlobalVarStructRedecl1ID3:0x[0-9a-f]+]] prev [[GlobalVarStructRedecl1ID2]] {{.*}} struct GlobalVarStructRedecl1 +// CHECK-NEXT: CXXRecordDecl {{.*}} prev [[GlobalVarStructRedecl1ID1]] {{.*}} struct GlobalVarStructRedecl1 // CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr // CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue // CHECK-NEXT: value: LValue @@ -262,220 +62,8 @@ void FunctionRedecl3(); // CHECK-NEXT: ConstantExpr {{.*}} 'bool' // CHECK-NEXT: value: Int 1 // CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: CXXRecordDecl [[GlobalVarStructRedecl1ID4:0x[0-9a-f]+]] prev [[GlobalVarStructRedecl1ID3]] {{.*}} struct GlobalVarStructRedecl1 -// CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: CXXRecordDecl [[GlobalVarStructRedecl1ID5:0x[0-9a-f]+]] prev [[GlobalVarStructRedecl1ID4]] {{.*}} struct GlobalVarStructRedecl1 -// CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 0 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' false -// CHECK-NEXT: CXXRecordDecl {{.*}} prev [[GlobalVarStructRedecl1ID5]] {{.*}} struct GlobalVarStructRedecl1 definition -// CHECK-NEXT: DefinitionData -// CHECK-NEXT: DefaultConstructor -// CHECK-NEXT: CopyConstructor -// CHECK-NEXT: MoveConstructor -// CHECK-NEXT: CopyAssignment -// CHECK-NEXT: MoveAssignment -// CHECK-NEXT: Destructor -// CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr3" -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 0 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' false -// CHECK-NEXT: CXXRecordDecl {{.*}} implicit struct GlobalVarStructRedecl1 -struct GlobalVarStructRedecl1; -struct [[__sycl_detail__::add_ir_attributes_global_variable("Attr1", "Attr2", 1, true)]] GlobalVarStructRedecl1; struct [[__sycl_detail__::add_ir_attributes_global_variable("Attr1", "Attr2", 1, true)]] GlobalVarStructRedecl1; -struct [[__sycl_detail__::add_ir_attributes_global_variable("Attr2", "Attr1", true, 1)]] GlobalVarStructRedecl1; -struct [[__sycl_detail__::add_ir_attributes_global_variable("Attr1", "Attr2", 1, false)]] GlobalVarStructRedecl1; -struct [[__sycl_detail__::add_ir_attributes_global_variable("Attr3", false)]] GlobalVarStructRedecl1{}; - -// CHECK: CXXRecordDecl [[GlobalVarStructRedecl2ID1:0x[0-9a-f]+]] {{.*}} struct GlobalVarStructRedecl2 -// CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: CXXRecordDecl {{.*}} prev [[GlobalVarStructRedecl2ID1]] {{.*}} struct GlobalVarStructRedecl2 -// CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -struct [[__sycl_detail__::add_ir_attributes_global_variable("Attr1", "Attr2", 1, true)]] GlobalVarStructRedecl2; -struct GlobalVarStructRedecl2; - -// CHECK: CXXRecordDecl [[GlobalVarStructRedecl3ID1:0x[0-9a-f]+]] {{.*}} struct GlobalVarStructRedecl3 -// CHECK-NEXT: CXXRecordDecl [[GlobalVarStructRedecl3ID2:0x[0-9a-f]+]] prev [[GlobalVarStructRedecl3ID1]] {{.*}} struct GlobalVarStructRedecl3 -// CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr -// CHECK-NEXT: InitListExpr {{.*}} 'void' -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr3" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: CXXRecordDecl [[GlobalVarStructRedecl3ID3:0x[0-9a-f]+]] prev [[GlobalVarStructRedecl3ID2]] {{.*}} struct GlobalVarStructRedecl3 -// CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr -// CHECK-NEXT: InitListExpr {{.*}} 'void' -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr3" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: CXXRecordDecl [[GlobalVarStructRedecl3ID4:0x[0-9a-f]+]] prev [[GlobalVarStructRedecl3ID3]] {{.*}} struct GlobalVarStructRedecl3 -// CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr -// CHECK-NEXT: InitListExpr {{.*}} 'void' -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr3" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: CXXRecordDecl [[GlobalVarStructRedecl3ID5:0x[0-9a-f]+]] prev [[GlobalVarStructRedecl3ID4]] {{.*}} struct GlobalVarStructRedecl3 -// CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr -// CHECK-NEXT: InitListExpr {{.*}} 'void' -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr3" -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: CXXRecordDecl [[GlobalVarStructRedecl3ID6:0x[0-9a-f]+]] prev [[GlobalVarStructRedecl3ID5]] {{.*}} struct GlobalVarStructRedecl3 -// CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr -// CHECK-NEXT: InitListExpr {{.*}} 'void' -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr3" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 0 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' false -// CHECK-NEXT: CXXRecordDecl [[GlobalVarStructRedecl3ID7:0x[0-9a-f]+]] prev [[GlobalVarStructRedecl3ID6]] {{.*}} struct GlobalVarStructRedecl3 -// CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr -// CHECK-NEXT: InitListExpr {{.*}} 'void' -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: CXXRecordDecl {{.*}} prev [[GlobalVarStructRedecl3ID7]] {{.*}} struct GlobalVarStructRedecl3 definition -// CHECK-NEXT: DefinitionData -// CHECK-NEXT: DefaultConstructor -// CHECK-NEXT: CopyConstructor -// CHECK-NEXT: MoveConstructor -// CHECK-NEXT: CopyAssignment -// CHECK-NEXT: MoveAssignment -// CHECK-NEXT: Destructor -// CHECK-NEXT: SYCLAddIRAttributesGlobalVariableAttr -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr1" -// CHECK-NEXT: ConstantExpr {{.*}} 'const char[6]' lvalue -// CHECK-NEXT: value: LValue -// CHECK-NEXT: StringLiteral {{.*}} 'const char[6]' lvalue "Attr2" -// CHECK-NEXT: ConstantExpr {{.*}} 'int' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: IntegerLiteral {{.*}} 'int' 1 -// CHECK-NEXT: ConstantExpr {{.*}} 'bool' -// CHECK-NEXT: value: Int 1 -// CHECK-NEXT: CXXBoolLiteralExpr {{.*}} 'bool' true -// CHECK-NEXT: CXXRecordDecl {{.*}} implicit struct GlobalVarStructRedecl3 -struct GlobalVarStructRedecl3; -struct [[__sycl_detail__::add_ir_attributes_global_variable({"Attr1", "Attr3"}, "Attr1", "Attr2", 1, true)]] GlobalVarStructRedecl3; -struct [[__sycl_detail__::add_ir_attributes_global_variable({"Attr1", "Attr3"}, "Attr1", "Attr2", 1, true)]] GlobalVarStructRedecl3; -struct [[__sycl_detail__::add_ir_attributes_global_variable({"Attr1", "Attr3"}, "Attr2", "Attr1", true, 1)]] GlobalVarStructRedecl3; -struct [[__sycl_detail__::add_ir_attributes_global_variable({"Attr3", "Attr1"}, "Attr1", "Attr2", 1, true)]] GlobalVarStructRedecl3; -struct [[__sycl_detail__::add_ir_attributes_global_variable({"Attr1", "Attr3"}, "Attr1", "Attr2", 1, false)]] GlobalVarStructRedecl3; -struct [[__sycl_detail__::add_ir_attributes_global_variable({"Attr1"}, "Attr1", "Attr2", 1, true)]] GlobalVarStructRedecl3; -struct [[__sycl_detail__::add_ir_attributes_global_variable("Attr1", "Attr2", 1, true)]] GlobalVarStructRedecl3{}; +struct GlobalVarStructRedecl1; // CHECK: CXXRecordDecl {{.*}} referenced struct GlobalVarStructBase definition // CHECK-NEXT: DefinitionData From 96a7b8271117deecc94beba2db6a2cf94969d997 Mon Sep 17 00:00:00 2001 From: "Larsen, Steffen" Date: Tue, 28 Oct 2025 09:13:46 -0700 Subject: [PATCH 2/3] Remove not Signed-off-by: Larsen, Steffen --- clang/test/AST/ast-attr-add-ir-attributes-merge.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/test/AST/ast-attr-add-ir-attributes-merge.cpp b/clang/test/AST/ast-attr-add-ir-attributes-merge.cpp index da940ace68002..bd75c34dd5dd0 100644 --- a/clang/test/AST/ast-attr-add-ir-attributes-merge.cpp +++ b/clang/test/AST/ast-attr-add-ir-attributes-merge.cpp @@ -1,4 +1,4 @@ -// RUN: not %clang_cc1 -fsycl-is-device -std=gnu++11 -ast-dump %s | FileCheck %s +// RUN: %clang_cc1 -fsycl-is-device -std=gnu++11 -ast-dump %s | FileCheck %s // Tests the AST produced from add_ir_attributes_* for valid and invalid // redeclarations. From 65f2aa30c65a8328c5c62f46b5841068191db052 Mon Sep 17 00:00:00 2001 From: "Larsen, Steffen" Date: Tue, 28 Oct 2025 23:59:19 -0700 Subject: [PATCH 3/3] Reword comment Signed-off-by: Larsen, Steffen --- clang/test/AST/ast-attr-add-ir-attributes-merge.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/clang/test/AST/ast-attr-add-ir-attributes-merge.cpp b/clang/test/AST/ast-attr-add-ir-attributes-merge.cpp index bd75c34dd5dd0..2773a30e1e20e 100644 --- a/clang/test/AST/ast-attr-add-ir-attributes-merge.cpp +++ b/clang/test/AST/ast-attr-add-ir-attributes-merge.cpp @@ -1,7 +1,6 @@ // RUN: %clang_cc1 -fsycl-is-device -std=gnu++11 -ast-dump %s | FileCheck %s -// Tests the AST produced from add_ir_attributes_* for valid and invalid -// redeclarations. +// Tests the AST produced from add_ir_attributes_* for valid redeclarations. // CHECK: FunctionDecl [[FunctionRedecl1ID1:0x[0-9a-f]+]] {{.*}} FunctionRedecl1 'void ()' // CHECK-NEXT: SYCLAddIRAttributesFunctionAttr