<div dir="ltr">The bots sees the same. Please fix or revert ASAP. <div><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/8301/steps/bootstrap%20clang/logs/stdio">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/8301/steps/bootstrap%20clang/logs/stdio</a><br></div><div><pre style="font-family:"Courier New",courier,monotype,monospace;color:rgb(0,0,0);font-size:medium;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px;text-decoration-style:initial;text-decoration-color:initial"><span class="gmail-stdout" style="font-family:"Courier New",courier,monotype,monospace;color:black">In file included from /b/sanitizer-x86_64-linux/build/llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.cpp:34:
/b/sanitizer-x86_64-linux/build/llvm_build64/lib/Target/Lanai/LanaiGenSubtargetInfo.inc:128:39: error: missing field 'SubUnitsIdxBegin' initializer [-Werror,-Wmissing-field-initializers]
{DBGFIELD("InvalidUnit") 0, 0, 0},
^
1 error generated.</span></pre><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Feb 8, 2018 at 10:33 AM, Craig Topper via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Is this responsible for this warning I'm seeing now<div><br></div><div><div>lib/Target/X86/<wbr>X86GenSubtargetInfo.inc:52484:<wbr>39: warning: missing field 'SubUnitsIdxBegin' initializer [-Wmissing-field-initializers]</div><span class=""><div> {DBGFIELD("InvalidUnit") 0, 0, 0},</div></span></div></div><div class="gmail_extra"><br clear="all"><div><div class="m_-8678641453557366051gmail_signature" data-smartmail="gmail_signature">~Craig</div></div><div><div class="h5">
<br><div class="gmail_quote">On Thu, Feb 8, 2018 at 12:46 AM, Clement Courbet via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: courbet<br>
Date: Thu Feb 8 00:46:48 2018<br>
New Revision: 324582<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=324582&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=324582&view=rev</a><br>
Log:<br>
[TargetSchedule] Expose sub-units of a ProcResGroup in MCProcResourceDesc.<br>
<br>
Summary:<br>
Right now using a ProcResource automatically counts as usage of all<br>
super ProcResGroups. All this is done during codegen, so there is no<br>
way for schedulers to get this information at runtime.<br>
<br>
This adds the information of which individual ProcRes units are<br>
contained in a ProcResGroup in MCProcResourceDesc.<br>
<br>
Reviewers: gchatelet<br>
<br>
Subscribers: llvm-commits<br>
<br>
Differential Revision: <a href="https://reviews.llvm.org/D43023" rel="noreferrer" target="_blank">https://reviews.llvm.org/D4302<wbr>3</a><br>
<br>
Modified:<br>
llvm/trunk/include/llvm/MC/MCS<wbr>chedule.h<br>
llvm/trunk/include/llvm/Target<wbr>/TargetSchedule.td<br>
llvm/trunk/utils/TableGen/Subt<wbr>argetEmitter.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/MC/MCS<wbr>chedule.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCSchedule.h?rev=324582&r1=324581&r2=324582&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/include/llvm/<wbr>MC/MCSchedule.h?rev=324582&r1=<wbr>324581&r2=324582&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/MC/MCS<wbr>chedule.h (original)<br>
+++ llvm/trunk/include/llvm/MC/MCS<wbr>chedule.h Thu Feb 8 00:46:48 2018<br>
@@ -44,6 +44,11 @@ struct MCProcResourceDesc {<br>
// an out-of-order cpus.<br>
int BufferSize;<br>
<br>
+ // If the resource has sub-units, a pointer to the first element of an array<br>
+ // of `NumUnits` elements containing the ProcResourceIdx of the sub units.<br>
+ // nullptr if the resource does not have sub-units.<br>
+ const unsigned *SubUnitsIdxBegin;<br>
+<br>
bool operator==(const MCProcResourceDesc &Other) const {<br>
return NumUnits == Other.NumUnits && SuperIdx == Other.SuperIdx<br>
&& BufferSize == Other.BufferSize;<br>
<br>
Modified: llvm/trunk/include/llvm/Target<wbr>/TargetSchedule.td<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetSchedule.td?rev=324582&r1=324581&r2=324582&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/include/llvm/<wbr>Target/TargetSchedule.td?rev=<wbr>324582&r1=324581&r2=324582&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/include/llvm/Target<wbr>/TargetSchedule.td (original)<br>
+++ llvm/trunk/include/llvm/Target<wbr>/TargetSchedule.td Thu Feb 8 00:46:48 2018<br>
@@ -175,8 +175,7 @@ class ProcResourceKind;<br>
// BufferSize=1.<br>
//<br>
// SchedModel ties these units to a processor for any stand-alone defs<br>
-// of this class. Instances of subclass ProcResource will be automatically<br>
-// attached to a processor, so SchedModel is not needed.<br>
+// of this class.<br>
class ProcResourceUnits<ProcResource<wbr>Kind kind, int num> {<br>
ProcResourceKind Kind = kind;<br>
int NumUnits = num;<br>
<br>
Modified: llvm/trunk/utils/TableGen/Subt<wbr>argetEmitter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/SubtargetEmitter.cpp?rev=324582&r1=324581&r2=324582&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/llvm/trunk/utils/TableGe<wbr>n/SubtargetEmitter.cpp?rev=<wbr>324582&r1=324581&r2=324582&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/utils/TableGen/Subt<wbr>argetEmitter.cpp (original)<br>
+++ llvm/trunk/utils/TableGen/Subt<wbr>argetEmitter.cpp Thu Feb 8 00:46:48 2018<br>
@@ -92,6 +92,8 @@ class SubtargetEmitter {<br>
&ProcItinLists);<br>
void EmitProcessorProp(raw_ostream &OS, const Record *R, StringRef Name,<br>
char Separator);<br>
+ void EmitProcessorResourceSubUnits(<wbr>const CodeGenProcModel &ProcModel,<br>
+ raw_ostream &OS);<br>
void EmitProcessorResources(const CodeGenProcModel &ProcModel,<br>
raw_ostream &OS);<br>
Record *FindWriteResources(const CodeGenSchedRW &SchedWrite,<br>
@@ -578,24 +580,52 @@ void SubtargetEmitter::EmitProcesso<wbr>rProp<br>
OS << '\n';<br>
}<br>
<br>
+void SubtargetEmitter::EmitProcesso<wbr>rResourceSubUnits(<br>
+ const CodeGenProcModel &ProcModel, raw_ostream &OS) {<br>
+ OS << "\nstatic const unsigned " << ProcModel.ModelName<br>
+ << "ProcResourceSubUnits[] = {\n"<br>
+ << " 0, // Invalid\n";<br>
+<br>
+ for (unsigned i = 0, e = ProcModel.ProcResourceDefs.siz<wbr>e(); i < e; ++i) {<br>
+ Record *PRDef = ProcModel.ProcResourceDefs[i];<br>
+ if (!PRDef->isSubClassOf("ProcRes<wbr>Group"))<br>
+ continue;<br>
+ RecVec ResUnits = PRDef->getValueAsListOfDefs("R<wbr>esources");<br>
+ for (Record *RUDef : ResUnits) {<br>
+ Record *const RU =<br>
+ SchedModels.findProcResUnits(R<wbr>UDef, ProcModel, PRDef->getLoc());<br>
+ for (unsigned J = 0; J < RU->getValueAsInt("NumUnits"); ++J) {<br>
+ OS << " " << ProcModel.getProcResourceIdx(R<wbr>U) << ", ";<br>
+ }<br>
+ }<br>
+ OS << " // " << PRDef->getName() << "\n";<br>
+ }<br>
+ OS << "};\n";<br>
+}<br>
+<br>
void SubtargetEmitter::EmitProcesso<wbr>rResources(const CodeGenProcModel &ProcModel,<br>
raw_ostream &OS) {<br>
- OS << "\n// {Name, NumUnits, SuperIdx, IsBuffered}\n";<br>
+ EmitProcessorResourceSubUnits(<wbr>ProcModel, OS);<br>
+<br>
+ OS << "\n// {Name, NumUnits, SuperIdx, IsBuffered, SubUnitsIdxBegin}\n";<br>
OS << "static const llvm::MCProcResourceDesc "<br>
<< ProcModel.ModelName << "ProcResources" << "[] = {\n"<br>
<< " {DBGFIELD(\"InvalidUnit\") 0, 0, 0},\n";<br>
<br>
+ unsigned SubUnitsOffset = 1;<br>
for (unsigned i = 0, e = ProcModel.ProcResourceDefs.siz<wbr>e(); i < e; ++i) {<br>
Record *PRDef = ProcModel.ProcResourceDefs[i];<br>
<br>
Record *SuperDef = nullptr;<br>
unsigned SuperIdx = 0;<br>
unsigned NumUnits = 0;<br>
+ const unsigned SubUnitsBeginOffset = SubUnitsOffset;<br>
int BufferSize = PRDef->getValueAsInt("BufferSi<wbr>ze");<br>
if (PRDef->isSubClassOf("ProcResG<wbr>roup")) {<br>
RecVec ResUnits = PRDef->getValueAsListOfDefs("R<wbr>esources");<br>
for (Record *RU : ResUnits) {<br>
NumUnits += RU->getValueAsInt("NumUnits");<br>
+ SubUnitsOffset += NumUnits;<br>
}<br>
}<br>
else {<br>
@@ -612,8 +642,14 @@ void SubtargetEmitter::EmitProcesso<wbr>rReso<br>
OS << " {DBGFIELD(\"" << PRDef->getName() << "\") ";<br>
if (PRDef->getName().size() < 15)<br>
OS.indent(15 - PRDef->getName().size());<br>
- OS << NumUnits << ", " << SuperIdx << ", "<br>
- << BufferSize << "}, // #" << i+1;<br>
+ OS << NumUnits << ", " << SuperIdx << ", " << BufferSize << ", ";<br>
+ if (SubUnitsBeginOffset != SubUnitsOffset) {<br>
+ OS << ProcModel.ModelName << "ProcResourceSubUnits + "<br>
+ << SubUnitsBeginOffset;<br>
+ } else {<br>
+ OS << "nullptr";<br>
+ }<br>
+ OS << "}, // #" << i+1;<br>
if (SuperDef)<br>
OS << ", Super=" << SuperDef->getName();<br>
OS << "\n";<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div></div>
<br>______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div>