<div dir="ltr">Was the change to StringRef.h supposed to be part of this?</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jun 20, 2016 at 10:10 PM, David Majnemer 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: majnemer<br>
Date: Tue Jun 21 00:10:24 2016<br>
New Revision: 273244<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=273244&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=273244&view=rev</a><br>
Log:<br>
Replace silly uses of 'signed' with 'int'<br>
<br>
Modified:<br>
llvm/trunk/include/llvm/ADT/StringRef.h<br>
llvm/trunk/include/llvm/CodeGen/ResourcePriorityQueue.h<br>
llvm/trunk/lib/Analysis/ConstantFolding.cpp<br>
llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp<br>
llvm/trunk/lib/CodeGen/SelectionDAG/ResourcePriorityQueue.cpp<br>
llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp<br>
llvm/trunk/lib/Target/ARM/ARMFastISel.cpp<br>
llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp<br>
llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp<br>
llvm/trunk/lib/Target/Mips/MipsSEFrameLowering.cpp<br>
llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td<br>
llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/ADT/StringRef.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringRef.h?rev=273244&r1=273243&r2=273244&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringRef.h?rev=273244&r1=273243&r2=273244&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/ADT/StringRef.h (original)<br>
+++ llvm/trunk/include/llvm/ADT/StringRef.h Tue Jun 21 00:10:24 2016<br>
@@ -10,6 +10,7 @@<br>
#ifndef LLVM_ADT_STRINGREF_H<br>
#define LLVM_ADT_STRINGREF_H<br>
<br>
+#include "llvm/ADT/iterator_range.h"<br>
#include "llvm/Support/Compiler.h"<br>
#include <algorithm><br>
#include <cassert><br>
@@ -101,6 +102,9 @@ namespace llvm {<br>
const unsigned char *bytes_end() const {<br>
return reinterpret_cast<const unsigned char *>(end());<br>
}<br>
+ iterator_range<const unsigned char *> bytes() const {<br>
+ return make_range(bytes_begin(), bytes_end());<br>
+ }<br>
<br>
/// @}<br>
/// @name String Operations<br>
<br>
Modified: llvm/trunk/include/llvm/CodeGen/ResourcePriorityQueue.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/ResourcePriorityQueue.h?rev=273244&r1=273243&r2=273244&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/ResourcePriorityQueue.h?rev=273244&r1=273243&r2=273244&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/CodeGen/ResourcePriorityQueue.h (original)<br>
+++ llvm/trunk/include/llvm/CodeGen/ResourcePriorityQueue.h Tue Jun 21 00:10:24 2016<br>
@@ -72,7 +72,7 @@ namespace llvm {<br>
<br>
/// Heuristics for estimating register pressure.<br>
unsigned ParallelLiveRanges;<br>
- signed HorizontalVerticalBalance;<br>
+ int HorizontalVerticalBalance;<br>
<br>
public:<br>
ResourcePriorityQueue(SelectionDAGISel *IS);<br>
@@ -103,14 +103,14 @@ namespace llvm {<br>
<br>
/// Single cost function reflecting benefit of scheduling SU<br>
/// in the current cycle.<br>
- signed SUSchedulingCost (SUnit *SU);<br>
+ int SUSchedulingCost (SUnit *SU);<br>
<br>
/// InitNumRegDefsLeft - Determine the # of regs defined by this node.<br>
///<br>
void initNumRegDefsLeft(SUnit *SU);<br>
void updateNumRegDefsLeft(SUnit *SU);<br>
- signed regPressureDelta(SUnit *SU, bool RawPressure = false);<br>
- signed rawRegPressureDelta (SUnit *SU, unsigned RCId);<br>
+ int regPressureDelta(SUnit *SU, bool RawPressure = false);<br>
+ int rawRegPressureDelta (SUnit *SU, unsigned RCId);<br>
<br>
bool empty() const override { return Queue.empty(); }<br>
<br>
<br>
Modified: llvm/trunk/lib/Analysis/ConstantFolding.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ConstantFolding.cpp?rev=273244&r1=273243&r2=273244&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ConstantFolding.cpp?rev=273244&r1=273243&r2=273244&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Analysis/ConstantFolding.cpp (original)<br>
+++ llvm/trunk/lib/Analysis/ConstantFolding.cpp Tue Jun 21 00:10:24 2016<br>
@@ -17,6 +17,7 @@<br>
//===----------------------------------------------------------------------===//<br>
<br>
#include "llvm/Analysis/ConstantFolding.h"<br>
+#include "llvm/ADT/STLExtras.h"<br>
#include "llvm/ADT/SmallPtrSet.h"<br>
#include "llvm/ADT/SmallVector.h"<br>
#include "llvm/ADT/StringMap.h"<br>
@@ -564,7 +565,7 @@ Constant *llvm::ConstantFoldLoadFromCons<br>
// directly if string length is small enough.<br>
StringRef Str;<br>
if (getConstantStringInfo(CE, Str) && !Str.empty()) {<br>
- unsigned StrLen = Str.size();<br>
+ size_t StrLen = Str.size();<br>
unsigned NumBits = Ty->getPrimitiveSizeInBits();<br>
// Replace load with immediate integer if the result is an integer or fp<br>
// value.<br>
@@ -573,15 +574,13 @@ Constant *llvm::ConstantFoldLoadFromCons<br>
APInt StrVal(NumBits, 0);<br>
APInt SingleChar(NumBits, 0);<br>
if (DL.isLittleEndian()) {<br>
- for (signed i = StrLen-1; i >= 0; i--) {<br>
- SingleChar = (uint64_t) Str[i] &<br>
- std::numeric_limits<unsigned char>::max();<br>
+ for (unsigned char C : reverse(Str.bytes())) {<br>
+ SingleChar = static_cast<uint64_t>(C);<br>
StrVal = (StrVal << 8) | SingleChar;<br>
}<br>
} else {<br>
- for (unsigned i = 0; i < StrLen; i++) {<br>
- SingleChar = (uint64_t) Str[i] &<br>
- std::numeric_limits<unsigned char>::max();<br>
+ for (unsigned char C : Str.bytes()) {<br>
+ SingleChar = static_cast<uint64_t>(C);<br>
StrVal = (StrVal << 8) | SingleChar;<br>
}<br>
// Append NULL at the end.<br>
<br>
Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=273244&r1=273243&r2=273244&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=273244&r1=273243&r2=273244&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Tue Jun 21 00:10:24 2016<br>
@@ -4692,7 +4692,7 @@ SDValue DAGCombiner::visitSRA(SDNode *N)<br>
TruncVT = EVT::getVectorVT(Ctx, TruncVT, VT.getVectorNumElements());<br>
<br>
// Determine the residual right-shift amount.<br>
- signed ShiftAmt = N1C->getZExtValue() - N01C->getZExtValue();<br>
+ int ShiftAmt = N1C->getZExtValue() - N01C->getZExtValue();<br>
<br>
// If the shift is not a no-op (in which case this should be just a sign<br>
// extend already), the truncated to type is legal, sign_extend is legal<br>
<br>
Modified: llvm/trunk/lib/CodeGen/SelectionDAG/ResourcePriorityQueue.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/ResourcePriorityQueue.cpp?rev=273244&r1=273243&r2=273244&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/ResourcePriorityQueue.cpp?rev=273244&r1=273243&r2=273244&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/CodeGen/SelectionDAG/ResourcePriorityQueue.cpp (original)<br>
+++ llvm/trunk/lib/CodeGen/SelectionDAG/ResourcePriorityQueue.cpp Tue Jun 21 00:10:24 2016<br>
@@ -37,7 +37,7 @@ static cl::opt<bool> DisableDFASched("di<br>
cl::ZeroOrMore, cl::init(false),<br>
cl::desc("Disable use of DFA during scheduling"));<br>
<br>
-static cl::opt<signed> RegPressureThreshold(<br>
+static cl::opt<int> RegPressureThreshold(<br>
"dfa-sched-reg-pressure-threshold", cl::Hidden, cl::ZeroOrMore, cl::init(5),<br>
cl::desc("Track reg pressure and switch priority to in-depth"));<br>
<br>
@@ -323,8 +323,8 @@ void ResourcePriorityQueue::reserveResou<br>
}<br>
}<br>
<br>
-signed ResourcePriorityQueue::rawRegPressureDelta(SUnit *SU, unsigned RCId) {<br>
- signed RegBalance = 0;<br>
+int ResourcePriorityQueue::rawRegPressureDelta(SUnit *SU, unsigned RCId) {<br>
+ int RegBalance = 0;<br>
<br>
if (!SU || !SU->getNode() || !SU->getNode()->isMachineOpcode())<br>
return RegBalance;<br>
@@ -357,8 +357,8 @@ signed ResourcePriorityQueue::rawRegPres<br>
/// The RawPressure flag makes this function to ignore<br>
/// existing reg file sizes, and report raw def/use<br>
/// balance.<br>
-signed ResourcePriorityQueue::regPressureDelta(SUnit *SU, bool RawPressure) {<br>
- signed RegBalance = 0;<br>
+int ResourcePriorityQueue::regPressureDelta(SUnit *SU, bool RawPressure) {<br>
+ int RegBalance = 0;<br>
<br>
if (!SU || !SU->getNode() || !SU->getNode()->isMachineOpcode())<br>
return RegBalance;<br>
@@ -398,9 +398,9 @@ static const unsigned FactorOne = 2;<br>
<br>
/// Returns single number reflecting benefit of scheduling SU<br>
/// in the current cycle.<br>
-signed ResourcePriorityQueue::SUSchedulingCost(SUnit *SU) {<br>
+int ResourcePriorityQueue::SUSchedulingCost(SUnit *SU) {<br>
// Initial trivial priority.<br>
- signed ResCount = 1;<br>
+ int ResCount = 1;<br>
<br>
// Do not waste time on a node that is already scheduled.<br>
if (SU->isScheduled)<br>
@@ -601,7 +601,7 @@ SUnit *ResourcePriorityQueue::pop() {<br>
<br>
std::vector<SUnit *>::iterator Best = Queue.begin();<br>
if (!DisableDFASched) {<br>
- signed BestCost = SUSchedulingCost(*Best);<br>
+ int BestCost = SUSchedulingCost(*Best);<br>
for (std::vector<SUnit *>::iterator I = std::next(Queue.begin()),<br>
E = Queue.end(); I != E; ++I) {<br>
<br>
<br>
Modified: llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp?rev=273244&r1=273243&r2=273244&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp?rev=273244&r1=273243&r2=273244&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp (original)<br>
+++ llvm/trunk/lib/Target/AArch64/AArch64ISelLowering.cpp Tue Jun 21 00:10:24 2016<br>
@@ -9475,14 +9475,13 @@ bool checkValueWidth(SDValue V, unsigned<br>
// isEquivalentMaskless() is the code for testing if the AND can be removed<br>
// factored out of the DAG recognition as the DAG can take several forms.<br>
<br>
-static<br>
-bool isEquivalentMaskless(unsigned CC, unsigned width,<br>
- ISD::LoadExtType ExtType, signed AddConstant,<br>
- signed CompConstant) {<br>
+static bool isEquivalentMaskless(unsigned CC, unsigned width,<br>
+ ISD::LoadExtType ExtType, int AddConstant,<br>
+ int CompConstant) {<br>
// By being careful about our equations and only writing the in term<br>
// symbolic values and well known constants (0, 1, -1, MaxUInt) we can<br>
// make them generally applicable to all bit widths.<br>
- signed MaxUInt = (1 << width);<br>
+ int MaxUInt = (1 << width);<br>
<br>
// For the purposes of these comparisons sign extending the type is<br>
// equivalent to zero extending the add and displacing it by half the integer<br>
<br>
Modified: llvm/trunk/lib/Target/ARM/ARMFastISel.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMFastISel.cpp?rev=273244&r1=273243&r2=273244&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMFastISel.cpp?rev=273244&r1=273243&r2=273244&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/ARM/ARMFastISel.cpp (original)<br>
+++ llvm/trunk/lib/Target/ARM/ARMFastISel.cpp Tue Jun 21 00:10:24 2016<br>
@@ -931,7 +931,7 @@ void ARMFastISel::AddLoadStoreOperands(M<br>
// ARM halfword load/stores and signed byte loads need an additional<br>
// operand.<br>
if (useAM3) {<br>
- signed Imm = (Addr.Offset < 0) ? (0x100 | -Addr.Offset) : Addr.Offset;<br>
+ int Imm = (Addr.Offset < 0) ? (0x100 | -Addr.Offset) : Addr.Offset;<br>
MIB.addReg(0);<br>
MIB.addImm(Imm);<br>
} else {<br>
@@ -945,7 +945,7 @@ void ARMFastISel::AddLoadStoreOperands(M<br>
// ARM halfword load/stores and signed byte loads need an additional<br>
// operand.<br>
if (useAM3) {<br>
- signed Imm = (Addr.Offset < 0) ? (0x100 | -Addr.Offset) : Addr.Offset;<br>
+ int Imm = (Addr.Offset < 0) ? (0x100 | -Addr.Offset) : Addr.Offset;<br>
MIB.addReg(0);<br>
MIB.addImm(Imm);<br>
} else {<br>
<br>
Modified: llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp?rev=273244&r1=273243&r2=273244&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp?rev=273244&r1=273243&r2=273244&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp (original)<br>
+++ llvm/trunk/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp Tue Jun 21 00:10:24 2016<br>
@@ -1797,15 +1797,13 @@ int HexagonAsmParser::processInstruction<br>
MCOperand &MO = Inst.getOperand(1);<br>
int64_t Value;<br>
if (MO.getExpr()->evaluateAsAbsolute(Value)) {<br>
- unsigned long long u64 = Value;<br>
- signed int s8 = (u64 >> 32) & 0xFFFFFFFF;<br>
- if (s8 < -128 || s8 > 127)<br>
+ int s8 = Hi_32(Value);<br>
+ if (!isInt<8>(s8))<br>
OutOfRange(IDLoc, s8, -128);<br>
MCOperand imm(MCOperand::createExpr(HexagonMCExpr::create(<br>
MCConstantExpr::create(s8, Context), Context))); // upper 32<br>
auto Expr = HexagonMCExpr::create(<br>
- MCConstantExpr::create(u64 & 0xFFFFFFFF, Context),<br>
- Context);<br>
+ MCConstantExpr::create(Lo_32(Value), Context), Context);<br>
HexagonMCInstrInfo::setMustExtend(*Expr, HexagonMCInstrInfo::mustExtend(*MO.getExpr()));<br>
MCOperand imm2(MCOperand::createExpr(Expr)); // lower 32<br>
Inst = makeCombineInst(Hexagon::A4_combineii, Rdd, imm, imm2);<br>
<br>
Modified: llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp?rev=273244&r1=273243&r2=273244&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp?rev=273244&r1=273243&r2=273244&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp (original)<br>
+++ llvm/trunk/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp Tue Jun 21 00:10:24 2016<br>
@@ -416,12 +416,12 @@ public:<br>
uint32_t Offset = Fixup.getOffset();<br>
unsigned NumBytes = getFixupKindNumBytes(Kind);<br>
assert(Offset + NumBytes <= DataSize && "Invalid fixup offset!");<br>
- char* InstAddr = Data + Offset;<br>
+ char *InstAddr = Data + Offset;<br>
<br>
Value = adjustFixupValue(Kind, FixupValue);<br>
if(!Value)<br>
return;<br>
- signed sValue = (signed)Value;<br>
+ int sValue = (int)Value;<br>
<br>
switch((unsigned)Kind) {<br>
default:<br>
<br>
Modified: llvm/trunk/lib/Target/Mips/MipsSEFrameLowering.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSEFrameLowering.cpp?rev=273244&r1=273243&r2=273244&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSEFrameLowering.cpp?rev=273244&r1=273243&r2=273244&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/Mips/MipsSEFrameLowering.cpp (original)<br>
+++ llvm/trunk/lib/Target/Mips/MipsSEFrameLowering.cpp Tue Jun 21 00:10:24 2016<br>
@@ -516,7 +516,7 @@ void MipsSEFrameLowering::emitPrologue(M<br>
unsigned VR = MF.getRegInfo().createVirtualRegister(RC);<br>
assert(isInt<16>(MFI->getMaxAlignment()) &&<br>
"Function's alignment size requirement is not supported.");<br>
- int MaxAlign = - (signed) MFI->getMaxAlignment();<br>
+ int MaxAlign = -(int)MFI->getMaxAlignment();<br>
<br>
BuildMI(MBB, MBBI, dl, TII.get(ADDiu), VR).addReg(ZERO) .addImm(MaxAlign);<br>
BuildMI(MBB, MBBI, dl, TII.get(AND), SP).addReg(SP).addReg(VR);<br>
<br>
Modified: llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td?rev=273244&r1=273243&r2=273244&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td?rev=273244&r1=273243&r2=273244&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td (original)<br>
+++ llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td Tue Jun 21 00:10:24 2016<br>
@@ -262,7 +262,7 @@ def HI16 : SDNodeXForm<imm, [{<br>
<br>
def HA16 : SDNodeXForm<imm, [{<br>
// Transformation function: shift the immediate value down into the low bits.<br>
- signed int Val = N->getZExtValue();<br>
+ int Val = N->getZExtValue();<br>
return getI32Imm((Val - (signed short)Val) >> 16, SDLoc(N));<br>
}]>;<br>
def MB : SDNodeXForm<imm, [{<br>
<br>
Modified: llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp?rev=273244&r1=273243&r2=273244&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp?rev=273244&r1=273243&r2=273244&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/InstCombine/InstructionCombining.cpp Tue Jun 21 00:10:24 2016<br>
@@ -1398,7 +1398,7 @@ Instruction *InstCombiner::visitGetEleme<br>
if (Op1 == &GEP)<br>
return nullptr;<br>
<br>
- signed DI = -1;<br>
+ int DI = -1;<br>
<br>
for (auto I = PN->op_begin()+1, E = PN->op_end(); I !=E; ++I) {<br>
GetElementPtrInst *Op2 = dyn_cast<GetElementPtrInst>(*I);<br>
<br>
<br>
_______________________________________________<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/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">~Craig</div>
</div>