<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Chris,<div class=""><br class=""></div><div class="">Is there a way to check what is on the buildslave?</div><div class=""><br class=""></div><div class="">It looks as if it did not updated the header file.</div><div class=""><br class=""></div><div class="">Cheers,</div><div class="">-Quentin<br class=""><div><blockquote type="cite" class=""><div class="">On Jul 9, 2016, at 11:24 PM, Lang Hames <<a href="mailto:lhames@gmail.com" class="">lhames@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Hi Wei,<div class=""><br class=""></div><div class="">I am still seeing failures on the buildbots: <a href="http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_build/" class="">http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_build/</a> , but you're right the code looks ok to me. Quentin, Chris - could this be a builder config issue?</div><div class=""><br class=""></div><div class="">- Lang.</div><div class=""><br class=""></div><div class=""><br class=""></div></div><div class="gmail_extra"><br class=""><div class="gmail_quote">On Sat, Jul 9, 2016 at 11:05 AM, Wei Mi <span dir="ltr" class=""><<a href="mailto:wmi@google.com" target="_blank" class="">wmi@google.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Lang,<br class="">
<br class="">
Sorry, I am little confused. I check the program and cannot see any<br class="">
discrepancy reported in the error log, and I also cannot reproduce the<br class="">
error in clang bootstrap build. Is it anything related with<br class="">
incremental build?<br class="">
<br class="">
Thanks,<br class="">
Wei.<br class="">
<div class="HOEnZb"><div class="h5"><br class="">
On Sat, Jul 9, 2016 at 9:28 AM, Wei Mi <<a href="mailto:wmi@google.com" class="">wmi@google.com</a>> wrote:<br class="">
> Sorry, I will fix it.<br class="">
><br class="">
> Thanks,<br class="">
> Wei.<br class="">
><br class="">
> On Sat, Jul 9, 2016 at 9:03 AM, Lang Hames <<a href="mailto:lhames@gmail.com" class="">lhames@gmail.com</a>> wrote:<br class="">
>> Hi Wei,<br class="">
>><br class="">
>> This appears to have broken the bots:<br class="">
>> <a href="http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_build/27331/" rel="noreferrer" target="_blank" class="">http://lab.llvm.org:8080/green/job/clang-stage1-cmake-RA-incremental_build/27331/</a><br class="">
>><br class="">
>> Could you please fix or revert?<br class="">
>><br class="">
>> Cheers,<br class="">
>> Lang.<br class="">
>><br class="">
>><br class="">
>> On Fri, Jul 8, 2016 at 2:08 PM, Wei Mi via llvm-commits<br class="">
>> <<a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a>> wrote:<br class="">
>>><br class="">
>>> Author: wmi<br class="">
>>> Date: Fri Jul 8 16:08:09 2016<br class="">
>>> New Revision: 274928<br class="">
>>><br class="">
>>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=274928&view=rev" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=274928&view=rev</a><br class="">
>>> Log:<br class="">
>>> Allow dead insts to be kept in DeadRemat only when they are<br class="">
>>> rematerializable.<br class="">
>>><br class="">
>>> Because isReallyTriviallyReMaterializableGeneric puts many limits on<br class="">
>>> rematerializable instructions, this fix can prevent instructions with<br class="">
>>> tied virtual operands and instructions with virtual register uses from<br class="">
>>> being kept in DeadRemat, so as to workaround the live interval consistency<br class="">
>>> problem for the dummy instructions kept in DeadRemat.<br class="">
>>><br class="">
>>> But we still need to fix the live interval consistency problem. This patch<br class="">
>>> is just a short time relieve. PR28464 has been filed as a reminder.<br class="">
>>><br class="">
>>> Differential Revision: <a href="http://reviews.llvm.org/D19486" rel="noreferrer" target="_blank" class="">http://reviews.llvm.org/D19486</a><br class="">
>>><br class="">
>>> Modified:<br class="">
>>> llvm/trunk/include/llvm/CodeGen/LiveRangeEdit.h<br class="">
>>> llvm/trunk/lib/CodeGen/InlineSpiller.cpp<br class="">
>>> llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp<br class="">
>>> llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp<br class="">
>>> llvm/trunk/lib/CodeGen/SplitKit.cpp<br class="">
>>> llvm/trunk/lib/CodeGen/SplitKit.h<br class="">
>>><br class="">
>>> Modified: llvm/trunk/include/llvm/CodeGen/LiveRangeEdit.h<br class="">
>>> URL:<br class="">
>>> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/LiveRangeEdit.h?rev=274928&r1=274927&r2=274928&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/LiveRangeEdit.h?rev=274928&r1=274927&r2=274928&view=diff</a><br class="">
>>><br class="">
>>> ==============================================================================<br class="">
>>> --- llvm/trunk/include/llvm/CodeGen/LiveRangeEdit.h (original)<br class="">
>>> +++ llvm/trunk/include/llvm/CodeGen/LiveRangeEdit.h Fri Jul 8 16:08:09<br class="">
>>> 2016<br class="">
>>> @@ -100,7 +100,8 @@ private:<br class="">
>>> SmallVector<LiveInterval*, 8>,<br class="">
>>> SmallPtrSet<LiveInterval*, 8> > ToShrinkSet;<br class="">
>>> /// Helper for eliminateDeadDefs.<br class="">
>>> - void eliminateDeadDef(MachineInstr *MI, ToShrinkSet &ToShrink);<br class="">
>>> + void eliminateDeadDef(MachineInstr *MI, ToShrinkSet &ToShrink,<br class="">
>>> + AliasAnalysis *AA);<br class="">
>>><br class="">
>>> /// MachineRegisterInfo callback to notify when new virtual<br class="">
>>> /// registers are created.<br class="">
>>> @@ -242,7 +243,8 @@ public:<br class="">
>>> /// allocator. These registers should not be split into new intervals<br class="">
>>> /// as currently those new intervals are not guaranteed to spill.<br class="">
>>> void eliminateDeadDefs(SmallVectorImpl<MachineInstr *> &Dead,<br class="">
>>> - ArrayRef<unsigned> RegsBeingSpilled = None);<br class="">
>>> + ArrayRef<unsigned> RegsBeingSpilled = None,<br class="">
>>> + AliasAnalysis *AA = nullptr);<br class="">
>>><br class="">
>>> /// calculateRegClassAndHint - Recompute register class and hint for<br class="">
>>> each new<br class="">
>>> /// register.<br class="">
>>><br class="">
>>> Modified: llvm/trunk/lib/CodeGen/InlineSpiller.cpp<br class="">
>>> URL:<br class="">
>>> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/InlineSpiller.cpp?rev=274928&r1=274927&r2=274928&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/InlineSpiller.cpp?rev=274928&r1=274927&r2=274928&view=diff</a><br class="">
>>><br class="">
>>> ==============================================================================<br class="">
>>> --- llvm/trunk/lib/CodeGen/InlineSpiller.cpp (original)<br class="">
>>> +++ llvm/trunk/lib/CodeGen/InlineSpiller.cpp Fri Jul 8 16:08:09 2016<br class="">
>>> @@ -626,7 +626,7 @@ void InlineSpiller::reMaterializeAll() {<br class="">
>>> if (DeadDefs.empty())<br class="">
>>> return;<br class="">
>>> DEBUG(dbgs() << "Remat created " << DeadDefs.size() << " dead<br class="">
>>> defs.\n");<br class="">
>>> - Edit->eliminateDeadDefs(DeadDefs, RegsToSpill);<br class="">
>>> + Edit->eliminateDeadDefs(DeadDefs, RegsToSpill, AA);<br class="">
>>><br class="">
>>> // LiveRangeEdit::eliminateDeadDef is used to remove dead define<br class="">
>>> instructions<br class="">
>>> // after rematerialization. To remove a VNI for a vreg from its<br class="">
>>> LiveInterval,<br class="">
>>> @@ -996,7 +996,7 @@ void InlineSpiller::spillAll() {<br class="">
>>> // Hoisted spills may cause dead code.<br class="">
>>> if (!DeadDefs.empty()) {<br class="">
>>> DEBUG(dbgs() << "Eliminating " << DeadDefs.size() << " dead defs\n");<br class="">
>>> - Edit->eliminateDeadDefs(DeadDefs, RegsToSpill);<br class="">
>>> + Edit->eliminateDeadDefs(DeadDefs, RegsToSpill, AA);<br class="">
>>> }<br class="">
>>><br class="">
>>> // Finally delete the SnippetCopies.<br class="">
>>> @@ -1440,7 +1440,7 @@ void HoistSpillHelper::hoistAllSpills()<br class="">
>>> RMEnt->RemoveOperand(i - 1);<br class="">
>>> }<br class="">
>>> }<br class="">
>>> - Edit.eliminateDeadDefs(SpillsToRm, None);<br class="">
>>> + Edit.eliminateDeadDefs(SpillsToRm, None, AA);<br class="">
>>> }<br class="">
>>> }<br class="">
>>><br class="">
>>><br class="">
>>> Modified: llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp<br class="">
>>> URL:<br class="">
>>> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp?rev=274928&r1=274927&r2=274928&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp?rev=274928&r1=274927&r2=274928&view=diff</a><br class="">
>>><br class="">
>>> ==============================================================================<br class="">
>>> --- llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp (original)<br class="">
>>> +++ llvm/trunk/lib/CodeGen/LiveRangeEdit.cpp Fri Jul 8 16:08:09 2016<br class="">
>>> @@ -234,7 +234,8 @@ bool LiveRangeEdit::useIsKill(const Live<br class="">
>>> }<br class="">
>>><br class="">
>>> /// Find all live intervals that need to shrink, then remove the<br class="">
>>> instruction.<br class="">
>>> -void LiveRangeEdit::eliminateDeadDef(MachineInstr *MI, ToShrinkSet<br class="">
>>> &ToShrink) {<br class="">
>>> +void LiveRangeEdit::eliminateDeadDef(MachineInstr *MI, ToShrinkSet<br class="">
>>> &ToShrink,<br class="">
>>> + AliasAnalysis *AA) {<br class="">
>>> assert(MI->allDefsAreDead() && "Def isn't really dead");<br class="">
>>> SlotIndex Idx = LIS.getInstructionIndex(*MI).getRegSlot();<br class="">
>>><br class="">
>>> @@ -327,11 +328,12 @@ void LiveRangeEdit::eliminateDeadDef(Mac<br class="">
>>> }<br class="">
>>> DEBUG(dbgs() << "Converted physregs to:\t" << *MI);<br class="">
>>> } else {<br class="">
>>> - // If the dest of MI is an original reg, don't delete the inst.<br class="">
>>> Replace<br class="">
>>> - // the dest with a new reg, keep the inst for remat of other<br class="">
>>> siblings.<br class="">
>>> - // The inst is saved in LiveRangeEdit::DeadRemats and will be deleted<br class="">
>>> - // after all the allocations of the func are done.<br class="">
>>> - if (isOrigDef) {<br class="">
>>> + // If the dest of MI is an original reg and MI is reMaterializable,<br class="">
>>> + // don't delete the inst. Replace the dest with a new reg, and keep<br class="">
>>> + // the inst for remat of other siblings. The inst is saved in<br class="">
>>> + // LiveRangeEdit::DeadRemats and will be deleted after all the<br class="">
>>> + // allocations of the func are done.<br class="">
>>> + if (isOrigDef && DeadRemats && TII.isTriviallyReMaterializable(*MI,<br class="">
>>> AA)) {<br class="">
>>> LiveInterval &NewLI = createEmptyIntervalFrom(Dest);<br class="">
>>> VNInfo *VNI = NewLI.getNextValue(Idx, LIS.getVNInfoAllocator());<br class="">
>>> NewLI.addSegment(LiveInterval::Segment(Idx, Idx.getDeadSlot(),<br class="">
>>> VNI));<br class="">
>>> @@ -361,13 +363,14 @@ void LiveRangeEdit::eliminateDeadDef(Mac<br class="">
>>> }<br class="">
>>><br class="">
>>> void LiveRangeEdit::eliminateDeadDefs(SmallVectorImpl<MachineInstr *><br class="">
>>> &Dead,<br class="">
>>> - ArrayRef<unsigned><br class="">
>>> RegsBeingSpilled) {<br class="">
>>> + ArrayRef<unsigned><br class="">
>>> RegsBeingSpilled,<br class="">
>>> + AliasAnalysis *AA) {<br class="">
>>> ToShrinkSet ToShrink;<br class="">
>>><br class="">
>>> for (;;) {<br class="">
>>> // Erase all dead defs.<br class="">
>>> while (!Dead.empty())<br class="">
>>> - eliminateDeadDef(Dead.pop_back_val(), ToShrink);<br class="">
>>> + eliminateDeadDef(Dead.pop_back_val(), ToShrink, AA);<br class="">
>>><br class="">
>>> if (ToShrink.empty())<br class="">
>>> break;<br class="">
>>><br class="">
>>> Modified: llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp<br class="">
>>> URL:<br class="">
>>> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp?rev=274928&r1=274927&r2=274928&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp?rev=274928&r1=274927&r2=274928&view=diff</a><br class="">
>>><br class="">
>>> ==============================================================================<br class="">
>>> --- llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp (original)<br class="">
>>> +++ llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp Fri Jul 8 16:08:09 2016<br class="">
>>> @@ -129,6 +129,7 @@ class RAGreedy : public MachineFunctionP<br class="">
>>> EdgeBundles *Bundles;<br class="">
>>> SpillPlacement *SpillPlacer;<br class="">
>>> LiveDebugVariables *DebugVars;<br class="">
>>> + AliasAnalysis *AA;<br class="">
>>><br class="">
>>> // state<br class="">
>>> std::unique_ptr<Spiller> SpillerInstance;<br class="">
>>> @@ -2592,6 +2593,7 @@ bool RAGreedy::runOnMachineFunction(Mach<br class="">
>>> Bundles = &getAnalysis<EdgeBundles>();<br class="">
>>> SpillPlacer = &getAnalysis<SpillPlacement>();<br class="">
>>> DebugVars = &getAnalysis<LiveDebugVariables>();<br class="">
>>> + AA = &getAnalysis<AAResultsWrapperPass>().getAAResults();<br class="">
>>><br class="">
>>> initializeCSRCost();<br class="">
>>><br class="">
>>> @@ -2600,7 +2602,7 @@ bool RAGreedy::runOnMachineFunction(Mach<br class="">
>>> DEBUG(LIS->dump());<br class="">
>>><br class="">
>>> SA.reset(new SplitAnalysis(*VRM, *LIS, *Loops));<br class="">
>>> - SE.reset(new SplitEditor(*SA, *LIS, *VRM, *DomTree, *MBFI));<br class="">
>>> + SE.reset(new SplitEditor(*SA, *AA, *LIS, *VRM, *DomTree, *MBFI));<br class="">
>>> ExtraRegInfo.clear();<br class="">
>>> ExtraRegInfo.resize(MRI->getNumVirtRegs());<br class="">
>>> NextCascade = 1;<br class="">
>>><br class="">
>>> Modified: llvm/trunk/lib/CodeGen/SplitKit.cpp<br class="">
>>> URL:<br class="">
>>> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SplitKit.cpp?rev=274928&r1=274927&r2=274928&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SplitKit.cpp?rev=274928&r1=274927&r2=274928&view=diff</a><br class="">
>>><br class="">
>>> ==============================================================================<br class="">
>>> --- llvm/trunk/lib/CodeGen/SplitKit.cpp (original)<br class="">
>>> +++ llvm/trunk/lib/CodeGen/SplitKit.cpp Fri Jul 8 16:08:09 2016<br class="">
>>> @@ -338,11 +338,13 @@ void SplitAnalysis::analyze(const LiveIn<br class="">
>>><br class="">
>>> //===----------------------------------------------------------------------===//<br class="">
>>><br class="">
>>> /// Create a new SplitEditor for editing the LiveInterval analyzed by SA.<br class="">
>>> -SplitEditor::SplitEditor(SplitAnalysis &sa, LiveIntervals &lis,<br class="">
>>> VirtRegMap &vrm,<br class="">
>>> +SplitEditor::SplitEditor(SplitAnalysis &sa, AliasAnalysis &aa,<br class="">
>>> + LiveIntervals &lis, VirtRegMap &vrm,<br class="">
>>> MachineDominatorTree &mdt,<br class="">
>>> MachineBlockFrequencyInfo &mbfi)<br class="">
>>> - : SA(sa), LIS(lis), VRM(vrm),<br class="">
>>> MRI(vrm.getMachineFunction().getRegInfo()),<br class="">
>>> - MDT(mdt),<br class="">
>>> TII(*vrm.getMachineFunction().getSubtarget().getInstrInfo()),<br class="">
>>> + : SA(sa), AA(aa), LIS(lis), VRM(vrm),<br class="">
>>> + MRI(vrm.getMachineFunction().getRegInfo()), MDT(mdt),<br class="">
>>> + TII(*vrm.getMachineFunction().getSubtarget().getInstrInfo()),<br class="">
>>> TRI(*vrm.getMachineFunction().getSubtarget().getRegisterInfo()),<br class="">
>>> MBFI(mbfi), Edit(nullptr), OpenIdx(0), SpillMode(SM_Partition),<br class="">
>>> RegAssign(Allocator) {}<br class="">
>>> @@ -1130,7 +1132,7 @@ void SplitEditor::deleteRematVictims() {<br class="">
>>> if (Dead.empty())<br class="">
>>> return;<br class="">
>>><br class="">
>>> - Edit->eliminateDeadDefs(Dead);<br class="">
>>> + Edit->eliminateDeadDefs(Dead, None, &AA);<br class="">
>>> }<br class="">
>>><br class="">
>>> void SplitEditor::finish(SmallVectorImpl<unsigned> *LRMap) {<br class="">
>>><br class="">
>>> Modified: llvm/trunk/lib/CodeGen/SplitKit.h<br class="">
>>> URL:<br class="">
>>> <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SplitKit.h?rev=274928&r1=274927&r2=274928&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SplitKit.h?rev=274928&r1=274927&r2=274928&view=diff</a><br class="">
>>><br class="">
>>> ==============================================================================<br class="">
>>> --- llvm/trunk/lib/CodeGen/SplitKit.h (original)<br class="">
>>> +++ llvm/trunk/lib/CodeGen/SplitKit.h Fri Jul 8 16:08:09 2016<br class="">
>>> @@ -235,6 +235,7 @@ public:<br class="">
>>> ///<br class="">
>>> class LLVM_LIBRARY_VISIBILITY SplitEditor {<br class="">
>>> SplitAnalysis &SA;<br class="">
>>> + AliasAnalysis &AA;<br class="">
>>> LiveIntervals &LIS;<br class="">
>>> VirtRegMap &VRM;<br class="">
>>> MachineRegisterInfo &MRI;<br class="">
>>> @@ -380,8 +381,9 @@ private:<br class="">
>>> public:<br class="">
>>> /// Create a new SplitEditor for editing the LiveInterval analyzed by<br class="">
>>> SA.<br class="">
>>> /// Newly created intervals will be appended to newIntervals.<br class="">
>>> - SplitEditor(SplitAnalysis &SA, LiveIntervals&, VirtRegMap&,<br class="">
>>> - MachineDominatorTree&, MachineBlockFrequencyInfo &);<br class="">
>>> + SplitEditor(SplitAnalysis &SA, AliasAnalysis &AA, LiveIntervals&,<br class="">
>>> + VirtRegMap&, MachineDominatorTree&,<br class="">
>>> + MachineBlockFrequencyInfo &);<br class="">
>>><br class="">
>>> /// reset - Prepare for a new split.<br class="">
>>> void reset(LiveRangeEdit&, ComplementSpillMode = SM_Partition);<br class="">
>>><br class="">
>>><br class="">
>>> _______________________________________________<br class="">
>>> llvm-commits mailing list<br class="">
>>> <a href="mailto:llvm-commits@lists.llvm.org" class="">llvm-commits@lists.llvm.org</a><br class="">
>>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br class="">
>><br class="">
>><br class="">
</div></div></blockquote></div><br class=""></div>
</div></blockquote></div><br class=""></div></body></html>