@@ -317,10 +317,13 @@ class SubjectList<list<AttrSubject> subjects, SubjectDiag diag = WarnDiag,
317
317
string CustomDiag = customDiag;
318
318
}
319
319
320
- class LangOpt<string name, code customCode = [{}]> {
320
+ class LangOpt<string name, bit warn = 1, code customCode = [{}]> {
321
321
// The language option to test; ignored when custom code is supplied.
322
322
string Name = name;
323
323
324
+ // If set to 1, diagnose the attribute as being ignored if the test fails.
325
+ bit Warn = warn;
326
+
324
327
// A custom predicate, written as an expression evaluated in a context with
325
328
// "LangOpts" bound.
326
329
code CustomCode = customCode;
@@ -329,19 +332,19 @@ def MicrosoftExt : LangOpt<"MicrosoftExt">;
329
332
def Borland : LangOpt<"Borland">;
330
333
def CUDA : LangOpt<"CUDA">;
331
334
def HIP : LangOpt<"HIP">;
332
- def SYCLIsDevice : LangOpt<"SYCLIsDevice ">;
333
- def SYCL : LangOpt<"SYCLIsDevice">;
334
- def SYCLIsHost : LangOpt<"SYCLIsHost">;
335
+ def SYCL : LangOpt<"SYCL ">;
336
+ def SYCLIsDevice : LangOpt<"", 0, "(LangOpts.SYCL && LangOpts. SYCLIsDevice) ">;
337
+ def SYCLIsHost : LangOpt<"", 0, "(LangOpts.SYCL && LangOpts. SYCLIsHost) ">;
335
338
def SYCLExplicitSIMD : LangOpt<"SYCLExplicitSIMD">;
336
- def COnly : LangOpt<"", "!LangOpts.CPlusPlus">;
339
+ def COnly : LangOpt<"", 1, "!LangOpts.CPlusPlus">;
337
340
def CPlusPlus : LangOpt<"CPlusPlus">;
338
341
def OpenCL : LangOpt<"OpenCL">;
339
342
def RenderScript : LangOpt<"RenderScript">;
340
343
def ObjC : LangOpt<"ObjC">;
341
344
def BlocksSupported : LangOpt<"Blocks">;
342
345
def ObjCAutoRefCount : LangOpt<"ObjCAutoRefCount">;
343
346
def ObjCNonFragileRuntime
344
- : LangOpt<"", "LangOpts.ObjCRuntime.allowsClassStubs()">;
347
+ : LangOpt<"", 1, "LangOpts.ObjCRuntime.allowsClassStubs()">;
345
348
346
349
// Language option for CMSE extensions
347
350
def Cmse : LangOpt<"Cmse">;
@@ -1322,7 +1325,7 @@ def SYCLIntelNoGlobalWorkOffset : InheritableAttr {
1322
1325
let Spellings = [CXX11<"intelfpga","no_global_work_offset">,
1323
1326
CXX11<"intel","no_global_work_offset">];
1324
1327
let Args = [ExprArgument<"Value", /*optional*/1>];
1325
- let LangOpts = [SYCLIsDevice, SYCLIsHost ];
1328
+ let LangOpts = [SYCLIsDevice];
1326
1329
let Subjects = SubjectList<[Function], ErrorDiag>;
1327
1330
let Documentation = [SYCLIntelNoGlobalWorkOffsetAttrDocs];
1328
1331
}
@@ -1331,7 +1334,7 @@ def SYCLIntelLoopFuse : InheritableAttr {
1331
1334
let Spellings = [CXX11<"intel", "loop_fuse">,
1332
1335
CXX11<"intel", "loop_fuse_independent">];
1333
1336
let Args = [ExprArgument<"Value", /*optional=*/ 1>];
1334
- let LangOpts = [SYCLIsDevice, SYCLIsHost ];
1337
+ let LangOpts = [SYCLIsDevice];
1335
1338
let Subjects = SubjectList<[Function], ErrorDiag>;
1336
1339
let Accessors = [Accessor<"isIndependent",
1337
1340
[CXX11<"intel", "loop_fuse_independent">]>];
@@ -1946,7 +1949,7 @@ def IntelFPGADoublePump : Attr {
1946
1949
CXX11<"intel", "doublepump">];
1947
1950
let Subjects = SubjectList<[IntelFPGAConstVar, IntelFPGALocalOrStaticVar,
1948
1951
Field], ErrorDiag>;
1949
- let LangOpts = [SYCLIsDevice, SYCLIsHost ];
1952
+ let LangOpts = [SYCLIsDevice];
1950
1953
let Documentation = [IntelFPGADoublePumpAttrDocs];
1951
1954
}
1952
1955
@@ -1955,7 +1958,7 @@ def IntelFPGASinglePump : Attr {
1955
1958
CXX11<"intel", "singlepump">];
1956
1959
let Subjects = SubjectList<[IntelFPGAConstVar, IntelFPGALocalOrStaticVar,
1957
1960
Field], ErrorDiag>;
1958
- let LangOpts = [SYCLIsDevice, SYCLIsHost ];
1961
+ let LangOpts = [SYCLIsDevice];
1959
1962
let Documentation = [IntelFPGASinglePumpAttrDocs];
1960
1963
}
1961
1964
@@ -1976,7 +1979,7 @@ def IntelFPGAMemory : Attr {
1976
1979
}];
1977
1980
let Subjects = SubjectList<[IntelFPGAConstVar, IntelFPGALocalStaticSlaveMemVar,
1978
1981
Field], ErrorDiag>;
1979
- let LangOpts = [SYCLIsDevice, SYCLIsHost ];
1982
+ let LangOpts = [SYCLIsDevice];
1980
1983
let Documentation = [IntelFPGAMemoryAttrDocs];
1981
1984
}
1982
1985
@@ -1985,7 +1988,7 @@ def IntelFPGARegister : Attr {
1985
1988
CXX11<"intel", "fpga_register">];
1986
1989
let Subjects = SubjectList<[IntelFPGAConstVar, IntelFPGALocalOrStaticVar,
1987
1990
Field], ErrorDiag>;
1988
- let LangOpts = [SYCLIsDevice, SYCLIsHost ];
1991
+ let LangOpts = [SYCLIsDevice];
1989
1992
let Documentation = [IntelFPGARegisterAttrDocs];
1990
1993
}
1991
1994
@@ -1996,7 +1999,7 @@ def IntelFPGABankWidth : Attr {
1996
1999
let Args = [ExprArgument<"Value">];
1997
2000
let Subjects = SubjectList<[IntelFPGAConstVar, IntelFPGALocalStaticSlaveMemVar,
1998
2001
Field], ErrorDiag>;
1999
- let LangOpts = [SYCLIsDevice, SYCLIsHost ];
2002
+ let LangOpts = [SYCLIsDevice];
2000
2003
let Documentation = [IntelFPGABankWidthAttrDocs];
2001
2004
}
2002
2005
@@ -2006,15 +2009,15 @@ def IntelFPGANumBanks : Attr {
2006
2009
let Args = [ExprArgument<"Value">];
2007
2010
let Subjects = SubjectList<[IntelFPGAConstVar, IntelFPGALocalStaticSlaveMemVar,
2008
2011
Field], ErrorDiag>;
2009
- let LangOpts = [SYCLIsDevice, SYCLIsHost ];
2012
+ let LangOpts = [SYCLIsDevice];
2010
2013
let Documentation = [IntelFPGANumBanksAttrDocs];
2011
2014
}
2012
2015
2013
2016
def IntelFPGAPrivateCopies : InheritableAttr {
2014
2017
let Spellings = [CXX11<"intelfpga","private_copies">,
2015
2018
CXX11<"intel","private_copies">];
2016
2019
let Args = [ExprArgument<"Value">];
2017
- let LangOpts = [SYCLIsDevice, SYCLIsHost ];
2020
+ let LangOpts = [SYCLIsDevice];
2018
2021
let Subjects = SubjectList<[IntelFPGALocalNonConstVar, Field], ErrorDiag>;
2019
2022
let Documentation = [IntelFPGAPrivateCopiesAttrDocs];
2020
2023
}
@@ -2026,7 +2029,7 @@ def IntelFPGAMerge : Attr {
2026
2029
let Args = [StringArgument<"Name">, StringArgument<"Direction">];
2027
2030
let Subjects = SubjectList<[IntelFPGAConstVar, IntelFPGALocalOrStaticVar,
2028
2031
Field], ErrorDiag>;
2029
- let LangOpts = [SYCLIsDevice, SYCLIsHost ];
2032
+ let LangOpts = [SYCLIsDevice];
2030
2033
let Documentation = [IntelFPGAMergeAttrDocs];
2031
2034
}
2032
2035
@@ -2036,7 +2039,7 @@ def IntelFPGAMaxReplicates : Attr {
2036
2039
let Args = [ExprArgument<"Value">];
2037
2040
let Subjects = SubjectList<[IntelFPGAConstVar, IntelFPGALocalStaticSlaveMemVar,
2038
2041
Field], ErrorDiag>;
2039
- let LangOpts = [SYCLIsDevice, SYCLIsHost ];
2042
+ let LangOpts = [SYCLIsDevice];
2040
2043
let Documentation = [IntelFPGAMaxReplicatesAttrDocs];
2041
2044
}
2042
2045
@@ -2045,7 +2048,7 @@ def IntelFPGASimpleDualPort : Attr {
2045
2048
CXX11<"intel","simple_dual_port">];
2046
2049
let Subjects = SubjectList<[IntelFPGAConstVar, IntelFPGALocalStaticSlaveMemVar,
2047
2050
Field], ErrorDiag>;
2048
- let LangOpts = [SYCLIsDevice, SYCLIsHost ];
2051
+ let LangOpts = [SYCLIsDevice];
2049
2052
let Documentation = [IntelFPGASimpleDualPortAttrDocs];
2050
2053
}
2051
2054
@@ -2081,7 +2084,7 @@ def IntelFPGAForcePow2Depth : Attr {
2081
2084
let Args = [ExprArgument<"Value">];
2082
2085
let Subjects = SubjectList<[IntelFPGAConstVar, IntelFPGALocalStaticSlaveMemVar,
2083
2086
Field], ErrorDiag>;
2084
- let LangOpts = [SYCLIsDevice, SYCLIsHost ];
2087
+ let LangOpts = [SYCLIsDevice];
2085
2088
let Documentation = [IntelFPGAForcePow2DepthAttrDocs];
2086
2089
let AdditionalMembers = [{
2087
2090
static unsigned getMinValue() {
0 commit comments