Skip to content

Commit 41d861c

Browse files
author
Finn Plummer
committed
reland-fix: Remove name shadowing of Register
We have that for the following program: ``` struct Foo { int X = 0; }; struct Bar { struct Foo Foo; } ``` will generate the following when compiled with gcc/g++: `error: declaration of ‘Foo Bar::Foo’ changes meaning of ‘Foo’ [-fpermissive]` but no error is generated when compiling with clang/clang++. This commit removes the name shadowing of Register to prevent compilation errors when building llvm with gcc/g++.
1 parent 4fad116 commit 41d861c

File tree

4 files changed

+21
-21
lines changed

4 files changed

+21
-21
lines changed

clang/include/clang/Parse/ParseHLSLRootSignature.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class RootSignatureParser {
7878
/// order and only exactly once. `ParsedClauseParams` denotes the current
7979
/// state of parsed params
8080
struct ParsedClauseParams {
81-
std::optional<llvm::hlsl::rootsig::Register> Register;
81+
std::optional<llvm::hlsl::rootsig::Register> Reg;
8282
std::optional<uint32_t> Space;
8383
};
8484
std::optional<ParsedClauseParams>

clang/lib/Parse/ParseHLSLRootSignature.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -123,13 +123,13 @@ bool RootSignatureParser::parseDescriptorTableClause() {
123123
return true;
124124

125125
// Check mandatory parameters were provided
126-
if (!Params->Register.has_value()) {
126+
if (!Params->Reg.has_value()) {
127127
getDiags().Report(CurToken.TokLoc, diag::err_hlsl_rootsig_missing_param)
128128
<< ExpectedReg;
129129
return true;
130130
}
131131

132-
Clause.Register = Params->Register.value();
132+
Clause.Reg = Params->Reg.value();
133133

134134
// Fill in optional values
135135
if (Params->Space.has_value())
@@ -156,15 +156,15 @@ RootSignatureParser::parseDescriptorTableClauseParams(TokenKind RegType) {
156156
do {
157157
// ( `b` | `t` | `u` | `s`) POS_INT
158158
if (tryConsumeExpectedToken(RegType)) {
159-
if (Params.Register.has_value()) {
159+
if (Params.Reg.has_value()) {
160160
getDiags().Report(CurToken.TokLoc, diag::err_hlsl_rootsig_repeat_param)
161161
<< CurToken.TokKind;
162162
return std::nullopt;
163163
}
164164
auto Reg = parseRegister();
165165
if (!Reg.has_value())
166166
return std::nullopt;
167-
Params.Register = Reg;
167+
Params.Reg = Reg;
168168
}
169169

170170
// `space` `=` POS_INT
@@ -205,30 +205,30 @@ std::optional<Register> RootSignatureParser::parseRegister() {
205205
CurToken.TokKind == TokenKind::sReg) &&
206206
"Expects to only be invoked starting at given keyword");
207207

208-
Register Register;
208+
Register Reg;
209209
switch (CurToken.TokKind) {
210210
default:
211211
llvm_unreachable("Switch for consumed token was not provided");
212212
case TokenKind::bReg:
213-
Register.ViewType = RegisterType::BReg;
213+
Reg.ViewType = RegisterType::BReg;
214214
break;
215215
case TokenKind::tReg:
216-
Register.ViewType = RegisterType::TReg;
216+
Reg.ViewType = RegisterType::TReg;
217217
break;
218218
case TokenKind::uReg:
219-
Register.ViewType = RegisterType::UReg;
219+
Reg.ViewType = RegisterType::UReg;
220220
break;
221221
case TokenKind::sReg:
222-
Register.ViewType = RegisterType::SReg;
222+
Reg.ViewType = RegisterType::SReg;
223223
break;
224224
}
225225

226226
auto Number = handleUIntLiteral();
227227
if (!Number.has_value())
228228
return std::nullopt; // propogate NumericLiteralParser error
229229

230-
Register.Number = *Number;
231-
return Register;
230+
Reg.Number = *Number;
231+
return Reg;
232232
}
233233

234234
std::optional<uint32_t> RootSignatureParser::handleUIntLiteral() {

clang/unittests/Parse/ParseHLSLRootSignatureTest.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -154,33 +154,33 @@ TEST_F(ParseHLSLRootSignatureTest, ValidParseDTClausesTest) {
154154
RootElement Elem = Elements[0];
155155
ASSERT_TRUE(std::holds_alternative<DescriptorTableClause>(Elem));
156156
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Type, ClauseType::CBuffer);
157-
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.ViewType,
157+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Reg.ViewType,
158158
RegisterType::BReg);
159-
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.Number, 0u);
159+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Reg.Number, 0u);
160160
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Space, 0u);
161161

162162
Elem = Elements[1];
163163
ASSERT_TRUE(std::holds_alternative<DescriptorTableClause>(Elem));
164164
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Type, ClauseType::SRV);
165-
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.ViewType,
165+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Reg.ViewType,
166166
RegisterType::TReg);
167-
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.Number, 42u);
167+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Reg.Number, 42u);
168168
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Space, 3u);
169169

170170
Elem = Elements[2];
171171
ASSERT_TRUE(std::holds_alternative<DescriptorTableClause>(Elem));
172172
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Type, ClauseType::Sampler);
173-
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.ViewType,
173+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Reg.ViewType,
174174
RegisterType::SReg);
175-
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.Number, 987u);
175+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Reg.Number, 987u);
176176
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Space, 2u);
177177

178178
Elem = Elements[3];
179179
ASSERT_TRUE(std::holds_alternative<DescriptorTableClause>(Elem));
180180
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Type, ClauseType::UAV);
181-
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.ViewType,
181+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Reg.ViewType,
182182
RegisterType::UReg);
183-
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Register.Number, 4294967294u);
183+
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Reg.Number, 4294967294u);
184184
ASSERT_EQ(std::get<DescriptorTableClause>(Elem).Space, 0u);
185185

186186
Elem = Elements[4];

llvm/include/llvm/Frontend/HLSL/HLSLRootSignature.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ struct DescriptorTable {
3939
using ClauseType = llvm::dxil::ResourceClass;
4040
struct DescriptorTableClause {
4141
ClauseType Type;
42-
Register Register;
42+
Register Reg;
4343
uint32_t Space = 0;
4444
};
4545

0 commit comments

Comments
 (0)