From bob.wilson at apple.com Mon Feb 22 15:39:41 2010
From: bob.wilson at apple.com (Bob Wilson)
Date: Mon, 22 Feb 2010 21:39:41 -0000
Subject: [llvm-commits] [llvm] r96805 -
/llvm/trunk/lib/Transforms/Scalar/GVN.cpp
Message-ID: <20100222213941.43F482A6C12E@llvm.org>
Author: bwilson
Date: Mon Feb 22 15:39:41 2010
New Revision: 96805
URL: http://llvm.org/viewvc/llvm-project?rev=96805&view=rev
Log:
Erase deleted instructions from GVN's ValueTable. This fixes assertion
failures from ValueTable::verifyRemoved() when using -debug.
Modified:
llvm/trunk/lib/Transforms/Scalar/GVN.cpp
Modified: llvm/trunk/lib/Transforms/Scalar/GVN.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GVN.cpp?rev=96805&r1=96804&r2=96805&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/GVN.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/GVN.cpp Mon Feb 22 15:39:41 2010
@@ -1497,6 +1497,7 @@
V->takeName(LI);
if (V->getType()->isPointerTy())
MD->invalidateCachedPointerInfo(V);
+ VN.erase(LI);
toErase.push_back(LI);
NumGVNLoad++;
return true;
@@ -1716,6 +1717,7 @@
V->takeName(LI);
if (V->getType()->isPointerTy())
MD->invalidateCachedPointerInfo(V);
+ VN.erase(LI);
toErase.push_back(LI);
NumPRELoad++;
return true;
@@ -1776,6 +1778,7 @@
L->replaceAllUsesWith(AvailVal);
if (AvailVal->getType()->isPointerTy())
MD->invalidateCachedPointerInfo(AvailVal);
+ VN.erase(L);
toErase.push_back(L);
NumGVNLoad++;
return true;
@@ -1821,6 +1824,7 @@
L->replaceAllUsesWith(StoredVal);
if (StoredVal->getType()->isPointerTy())
MD->invalidateCachedPointerInfo(StoredVal);
+ VN.erase(L);
toErase.push_back(L);
NumGVNLoad++;
return true;
@@ -1850,6 +1854,7 @@
L->replaceAllUsesWith(AvailableVal);
if (DepLI->getType()->isPointerTy())
MD->invalidateCachedPointerInfo(DepLI);
+ VN.erase(L);
toErase.push_back(L);
NumGVNLoad++;
return true;
@@ -1860,6 +1865,7 @@
// intervening stores, for example.
if (isa(DepInst) || isMalloc(DepInst)) {
L->replaceAllUsesWith(UndefValue::get(L->getType()));
+ VN.erase(L);
toErase.push_back(L);
NumGVNLoad++;
return true;
@@ -1870,6 +1876,7 @@
if (IntrinsicInst* II = dyn_cast(DepInst)) {
if (II->getIntrinsicID() == Intrinsic::lifetime_start) {
L->replaceAllUsesWith(UndefValue::get(L->getType()));
+ VN.erase(L);
toErase.push_back(L);
NumGVNLoad++;
return true;
From johnny.chen at apple.com Mon Feb 22 15:50:40 2010
From: johnny.chen at apple.com (Johnny Chen)
Date: Mon, 22 Feb 2010 21:50:40 -0000
Subject: [llvm-commits] [llvm] r96806 -
/llvm/trunk/lib/Target/ARM/ARMInstrInfo.td
Message-ID: <20100222215041.067362A6C12F@llvm.org>
Author: johnny
Date: Mon Feb 22 15:50:40 2010
New Revision: 96806
URL: http://llvm.org/viewvc/llvm-project?rev=96806&view=rev
Log:
Added SEL, SXTB16, SXTAB16, UXTAB16, SMMULR, SMMLAR, SMMLSR, SMUAD, and SMUSD,
for disassembly only.
Modified:
llvm/trunk/lib/Target/ARM/ARMInstrInfo.td
Modified: llvm/trunk/lib/Target/ARM/ARMInstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrInfo.td?rev=96806&r1=96805&r2=96806&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrInfo.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrInfo.td Mon Feb 22 15:50:40 2010
@@ -514,6 +514,22 @@
}
}
+multiclass AI_unary_rrot_np opcod, string opc> {
+ def r : AExtI,
+ Requires<[IsARM, HasV6]> {
+ let Inst{11-10} = 0b00;
+ let Inst{19-16} = 0b1111;
+ }
+ def r_rot : AExtI,
+ Requires<[IsARM, HasV6]> {
+ let Inst{19-16} = 0b1111;
+ }
+}
+
/// AI_bin_rrot - A binary operation with two forms: one whose operand is a
/// register and one whose operand is a register rotated by 8/16/24.
multiclass AI_bin_rrot opcod, string opc, PatFrag opnode> {
@@ -531,6 +547,21 @@
Requires<[IsARM, HasV6]>;
}
+// For disassembly only.
+multiclass AI_bin_rrot_np opcod, string opc> {
+ def rr : AExtI,
+ Requires<[IsARM, HasV6]> {
+ let Inst{11-10} = 0b00;
+ }
+ def rr_rot : AExtI,
+ Requires<[IsARM, HasV6]>;
+}
+
/// AI1_adde_sube_irs - Define instructions and patterns for adde and sube.
let Uses = [CPSR] in {
multiclass AI1_adde_sube_irs opcod, string opc, PatFrag opnode,
@@ -644,6 +675,14 @@
let Inst{7-0} = 0b00000011;
}
+def SEL : AI<(outs GPR:$dst), (ins GPR:$a, GPR:$b), DPFrm, NoItinerary, "sel",
+ "\t$dst, $a, $b",
+ [/* For disassembly only; pattern left blank */]>,
+ Requires<[IsARM, HasV6]> {
+ let Inst{27-20} = 0b01101000;
+ let Inst{7-4} = 0b1011;
+}
+
def SEV : AI<(outs), (ins), MiscFrm, NoItinerary, "sev", "",
[/* For disassembly only; pattern left blank */]>,
Requires<[IsARM, HasV6T2]> {
@@ -1334,7 +1373,11 @@
defm SXTAH : AI_bin_rrot<0b01101011,
"sxtah", BinOpFrag<(add node:$LHS, (sext_inreg node:$RHS,i16))>>;
-// TODO: SXT(A){B|H}16
+// For disassembly only
+defm SXTB16 : AI_unary_rrot_np<0b01101000, "sxtb16">;
+
+// For disassembly only
+defm SXTAB16 : AI_bin_rrot_np<0b01101000, "sxtab16">;
// Zero extenders
@@ -1358,9 +1401,9 @@
}
// This isn't safe in general, the add is two 16-bit units, not a 32-bit add.
-//defm UXTAB16 : xxx<"uxtab16", 0xff00ff>;
+// For disassembly only
+defm UXTAB16 : AI_bin_rrot_np<0b01101100, "uxtab16">;
-// TODO: UXT(A){B|H}16
def SBFX : I<(outs GPR:$dst),
(ins GPR:$src, imm0_31:$lsb, imm0_31:$width),
@@ -1710,6 +1753,14 @@
let Inst{15-12} = 0b1111;
}
+def SMMULR : AMul2I <0b0111010, (outs GPR:$dst), (ins GPR:$a, GPR:$b),
+ IIC_iMUL32, "smmulr", "\t$dst, $a, $b",
+ [/* For disassembly only; pattern left blank */]>,
+ Requires<[IsARM, HasV6]> {
+ let Inst{7-4} = 0b0011; // R = 1
+ let Inst{15-12} = 0b1111;
+}
+
def SMMLA : AMul2I <0b0111010, (outs GPR:$dst), (ins GPR:$a, GPR:$b, GPR:$c),
IIC_iMAC32, "smmla", "\t$dst, $a, $b, $c",
[(set GPR:$dst, (add (mulhs GPR:$a, GPR:$b), GPR:$c))]>,
@@ -1717,6 +1768,12 @@
let Inst{7-4} = 0b0001;
}
+def SMMLAR : AMul2I <0b0111010, (outs GPR:$dst), (ins GPR:$a, GPR:$b, GPR:$c),
+ IIC_iMAC32, "smmlar", "\t$dst, $a, $b, $c",
+ [/* For disassembly only; pattern left blank */]>,
+ Requires<[IsARM, HasV6]> {
+ let Inst{7-4} = 0b0011; // R = 1
+}
def SMMLS : AMul2I <0b0111010, (outs GPR:$dst), (ins GPR:$a, GPR:$b, GPR:$c),
IIC_iMAC32, "smmls", "\t$dst, $a, $b, $c",
@@ -1725,6 +1782,13 @@
let Inst{7-4} = 0b1101;
}
+def SMMLSR : AMul2I <0b0111010, (outs GPR:$dst), (ins GPR:$a, GPR:$b, GPR:$c),
+ IIC_iMAC32, "smmlsr", "\t$dst, $a, $b, $c",
+ [/* For disassembly only; pattern left blank */]>,
+ Requires<[IsARM, HasV6]> {
+ let Inst{7-4} = 0b1111; // R = 1
+}
+
multiclass AI_smul {
def BB : AMulxyI<0b0001011, (outs GPR:$dst), (ins GPR:$a, GPR:$b),
IIC_iMUL32, !strconcat(opc, "bb"), "\t$dst, $a, $b",
@@ -1907,8 +1971,22 @@
defm SMLA : AI_smld<0, "smla">;
defm SMLS : AI_smld<1, "smls">;
-// TODO: Dual halfword multiple: SMUAD, SMUSD, SMLAD, SMLSD, SMLALD, SMLSLD
-// Note: SMLAD, SMLSD, SMLALD, SMLSLD have been defined for disassembly only.
+multiclass AI_sdml {
+
+ def D : AMulDualI<0, sub, 0, (outs GPR:$dst), (ins GPR:$a, GPR:$b),
+ NoItinerary, !strconcat(opc, "d"), "\t$dst, $a, $b"> {
+ let Inst{15-12} = 0b1111;
+ }
+
+ def DX : AMulDualI<0, sub, 1, (outs GPR:$dst), (ins GPR:$a, GPR:$b),
+ NoItinerary, !strconcat(opc, "dx"), "\t$dst, $a, $b"> {
+ let Inst{15-12} = 0b1111;
+ }
+
+}
+
+defm SMUA : AI_sdml<0, "smua">;
+defm SMUS : AI_sdml<1, "smus">;
//===----------------------------------------------------------------------===//
// Misc. Arithmetic Instructions.
From john at bass-software.com Mon Feb 22 15:56:45 2010
From: john at bass-software.com (John Tytgat)
Date: Mon, 22 Feb 2010 22:56:45 +0100
Subject: [llvm-commits] Support for ARMv4
In-Reply-To: <74a934ea50.Jo@hobbes.bass-software.com>
References: <698345e950.Jo@hobbes.bass-software.com>
<30e333ea50.Jo@hobbes.bass-software.com>
<74a934ea50.Jo@hobbes.bass-software.com>
Message-ID: <887bc4ed50.Jo@hobbes.bass-software.com>
Ping ? After r96360 I had to update the llvm-armv4.patch, so updated
version included (as well llvm-gcc-armv4.patch).
John.
In message <74a934ea50.Jo at hobbes.bass-software.com>
John Tytgat wrote:
> In message <30e333ea50.Jo at hobbes.bass-software.com>
> John Tytgat wrote:
>
> > In message
> > Anton Korobeynikov wrote:
> >
> > > Hello, John
> > >
> > > > No regressions for 'make TESTSUITE=CodeGen/ARM check'.
> > > This is pretty expected and necessary thing, but not sufficient.
> > >
> > > Could you please compile llvm-gcc as a cross-compiler for ARMv4? Even
> > > better, with newlib compiled at the same time. This will ensure that
> > > the v4 support is indeed real.
> >
> > Sure, and thanks for this useful suggestion. It allowed me to finetune
> > a couple of things ;-) Attached two patches, one for llvm and one for
> > llvm-gcc:
> >
> > llvm-armv4.patch:
> > [...]
> > - test/CodeGen/ARM/armv4.ll: Added test case.
> >
> > llvm-gcc-armv4.patch:
>
> Apologies, I just see the armv4.ll testcase wasn't included. Attached
> the two patches again with that fixed.
>
> John.
--
John Tytgat BASS
John at bass-software.com ARM powered, RISC OS driven
-------------- next part --------------
Index: test/CodeGen/ARM/armv4.ll
===================================================================
--- test/CodeGen/ARM/armv4.ll (revision 0)
+++ test/CodeGen/ARM/armv4.ll (revision 0)
@@ -0,0 +1,13 @@
+; RUN: llc < %s -mtriple=arm-unknown-eabi | FileCheck %s -check-prefix=THUMB
+; RUN: llc < %s -mtriple=arm-unknown-eabi -mcpu=strongarm | FileCheck %s -check-prefix=ARM
+; RUN: llc < %s -mtriple=arm-unknown-eabi -mcpu=cortex-a8 | FileCheck %s -check-prefix=THUMB
+; RUN: llc < %s -mtriple=arm-unknown-eabi -mattr=+v6 | FileCheck %s -check-prefix=THUMB
+; RUN: llc < %s -mtriple=armv4-unknown-eabi | FileCheck %s -check-prefix=ARM
+; RUN: llc < %s -mtriple=armv4t-unknown-eabi | FileCheck %s -check-prefix=THUMB
+
+define arm_aapcscc i32 @test(i32 %a) nounwind readnone {
+entry:
+; ARM: mov pc
+; THUMB: bx
+ ret i32 %a
+}
Index: lib/Target/ARM/ARMSubtarget.cpp
===================================================================
--- lib/Target/ARM/ARMSubtarget.cpp (revision 96766)
+++ lib/Target/ARM/ARMSubtarget.cpp (working copy)
@@ -33,7 +33,7 @@
ARMSubtarget::ARMSubtarget(const std::string &TT, const std::string &FS,
bool isT)
- : ARMArchVersion(V4T)
+ : ARMArchVersion(V4)
, ARMFPUType(None)
, UseNEONForSinglePrecisionFP(UseNEONFP)
, IsThumb(isT)
@@ -54,6 +54,11 @@
// Parse features string.
CPUString = ParseSubtargetFeatures(FS, CPUString);
+ // When no arch is specified either by CPU or by attributes, make the default
+ // ARMv4T.
+ if (CPUString == "generic" && (FS.empty() || FS == "generic"))
+ ARMArchVersion = V4T;
+
// Set the boolean corresponding to the current target triple, or the default
// if one cannot be determined, to true.
unsigned Len = TT.length();
@@ -68,25 +73,28 @@
}
if (Idx) {
unsigned SubVer = TT[Idx];
- if (SubVer > '4' && SubVer <= '9') {
- if (SubVer >= '7') {
- ARMArchVersion = V7A;
- } else if (SubVer == '6') {
- ARMArchVersion = V6;
- if (Len >= Idx+3 && TT[Idx+1] == 't' && TT[Idx+2] == '2')
- ARMArchVersion = V6T2;
- } else if (SubVer == '5') {
- ARMArchVersion = V5T;
- if (Len >= Idx+3 && TT[Idx+1] == 't' && TT[Idx+2] == 'e')
- ARMArchVersion = V5TE;
- }
- if (ARMArchVersion >= V6T2)
- ThumbMode = Thumb2;
+ if (SubVer >= '7' && SubVer <= '9') {
+ ARMArchVersion = V7A;
+ } else if (SubVer == '6') {
+ ARMArchVersion = V6;
+ if (Len >= Idx+3 && TT[Idx+1] == 't' && TT[Idx+2] == '2')
+ ARMArchVersion = V6T2;
+ } else if (SubVer == '5') {
+ ARMArchVersion = V5T;
+ if (Len >= Idx+3 && TT[Idx+1] == 't' && TT[Idx+2] == 'e')
+ ARMArchVersion = V5TE;
+ } else if (SubVer == '4') {
+ if (Len >= Idx+2 && TT[Idx+1] == 't')
+ ARMArchVersion = V4T;
+ else
+ ARMArchVersion = V4;
}
}
// Thumb2 implies at least V6T2.
- if (ARMArchVersion < V6T2 && ThumbMode >= Thumb2)
+ if (ARMArchVersion >= V6T2)
+ ThumbMode = Thumb2;
+ else if (ThumbMode >= Thumb2)
ARMArchVersion = V6T2;
if (Len >= 10) {
Index: lib/Target/ARM/ARMInstrInfo.td
===================================================================
--- lib/Target/ARM/ARMInstrInfo.td (revision 96766)
+++ lib/Target/ARM/ARMInstrInfo.td (working copy)
@@ -113,6 +113,8 @@
//===----------------------------------------------------------------------===//
// ARM Instruction Predicate Definitions.
//
+def HasV4T : Predicate<"Subtarget->hasV4TOps()">;
+def NoV4T : Predicate<"!Subtarget->hasV4TOps()">;
def HasV5T : Predicate<"Subtarget->hasV5TOps()">;
def HasV5TE : Predicate<"Subtarget->hasV5TEOps()">;
def HasV6 : Predicate<"Subtarget->hasV6Ops()">;
@@ -809,24 +811,50 @@
// Control Flow Instructions.
//
-let isReturn = 1, isTerminator = 1, isBarrier = 1 in
+let isReturn = 1, isTerminator = 1, isBarrier = 1 in {
+ // ARMV4T and above
def BX_RET : AI<(outs), (ins), BrMiscFrm, IIC_Br,
- "bx", "\tlr", [(ARMretflag)]> {
- let Inst{3-0} = 0b1110;
- let Inst{7-4} = 0b0001;
- let Inst{19-8} = 0b111111111111;
- let Inst{27-20} = 0b00010010;
+ "bx", "\tlr", [(ARMretflag)]>,
+ Requires<[IsARM, HasV4T]> {
+ let Inst{3-0} = 0b1110;
+ let Inst{7-4} = 0b0001;
+ let Inst{19-8} = 0b111111111111;
+ let Inst{27-20} = 0b00010010;
+ }
+
+ // ARMV4 only
+ def MOVPCLR : AI<(outs), (ins), BrMiscFrm, IIC_Br,
+ "mov", "\tpc, lr", [(ARMretflag)]>,
+ Requires<[IsARM, NoV4T]> {
+ let Inst{11-0} = 0b000000001110;
+ let Inst{15-12} = 0b1111;
+ let Inst{19-16} = 0b0000;
+ let Inst{27-20} = 0b00011010;
+ }
}
// Indirect branches
let isBranch = 1, isTerminator = 1, isBarrier = 1, isIndirectBranch = 1 in {
+ // ARMV4T and above
def BRIND : AXI<(outs), (ins GPR:$dst), BrMiscFrm, IIC_Br, "bx\t$dst",
- [(brind GPR:$dst)]> {
+ [(brind GPR:$dst)]>,
+ Requires<[IsARM, HasV4T]> {
let Inst{7-4} = 0b0001;
let Inst{19-8} = 0b111111111111;
let Inst{27-20} = 0b00010010;
let Inst{31-28} = 0b1110;
}
+
+ // ARMV4 only
+ def MOVPCRX : AXI<(outs), (ins GPR:$dst), BrMiscFrm, IIC_Br, "mov\tpc, $dst",
+ [(brind GPR:$dst)]>,
+ Requires<[IsARM, NoV4T]> {
+ let Inst{11-4} = 0b00000000;
+ let Inst{15-12} = 0b1111;
+ let Inst{19-16} = 0b0000;
+ let Inst{27-20} = 0b00011010;
+ let Inst{31-28} = 0b1110;
+ }
}
// FIXME: remove when we have a way to marking a MI with these properties.
@@ -871,11 +899,22 @@
def BX : ABXIx2<(outs), (ins tGPR:$func, variable_ops),
IIC_Br, "mov\tlr, pc\n\tbx\t$func",
[(ARMcall_nolink tGPR:$func)]>,
- Requires<[IsARM, IsNotDarwin]> {
+ Requires<[IsARM, HasV4T, IsNotDarwin]> {
let Inst{7-4} = 0b0001;
let Inst{19-8} = 0b111111111111;
let Inst{27-20} = 0b00010010;
}
+
+ // ARMv4
+ def BMOVPCRX : ABXIx2<(outs), (ins tGPR:$func, variable_ops),
+ IIC_Br, "mov\tlr, pc\n\tmov\tpc, $func",
+ [(ARMcall_nolink tGPR:$func)]>,
+ Requires<[IsARM, NoV4T, IsNotDarwin]> {
+ let Inst{11-4} = 0b00000000;
+ let Inst{15-12} = 0b1111;
+ let Inst{19-16} = 0b0000;
+ let Inst{27-20} = 0b00011010;
+ }
}
// On Darwin R9 is call-clobbered.
@@ -908,11 +947,23 @@
// Note: Restrict $func to the tGPR regclass to prevent it being in LR.
def BXr9 : ABXIx2<(outs), (ins tGPR:$func, variable_ops),
IIC_Br, "mov\tlr, pc\n\tbx\t$func",
- [(ARMcall_nolink tGPR:$func)]>, Requires<[IsARM, IsDarwin]> {
+ [(ARMcall_nolink tGPR:$func)]>,
+ Requires<[IsARM, HasV4T, IsDarwin]> {
let Inst{7-4} = 0b0001;
let Inst{19-8} = 0b111111111111;
let Inst{27-20} = 0b00010010;
}
+
+ // ARMv4
+ def BMOVPCRXr9 : ABXIx2<(outs), (ins tGPR:$func, variable_ops),
+ IIC_Br, "mov\tlr, pc\n\tmov\tpc, $func",
+ [(ARMcall_nolink tGPR:$func)]>,
+ Requires<[IsARM, NoV4T, IsDarwin]> {
+ let Inst{11-4} = 0b00000000;
+ let Inst{15-12} = 0b1111;
+ let Inst{19-16} = 0b0000;
+ let Inst{27-20} = 0b00011010;
+ }
}
let isBranch = 1, isTerminator = 1 in {
Index: lib/Target/ARM/ARMCodeEmitter.cpp
===================================================================
--- lib/Target/ARM/ARMCodeEmitter.cpp (revision 96766)
+++ lib/Target/ARM/ARMCodeEmitter.cpp (working copy)
@@ -1138,7 +1138,7 @@
// Set the conditional execution predicate
Binary |= II->getPredicate(&MI) << ARMII::CondShift;
- if (TID.Opcode == ARM::BX_RET)
+ if (TID.Opcode == (Subtarget->hasV4TOps() ? ARM::BX_RET : ARM::MOVPCLR))
// The return register is LR.
Binary |= ARMRegisterInfo::getRegisterNumbering(ARM::LR);
else
Index: lib/Target/ARM/ARMSubtarget.h
===================================================================
--- lib/Target/ARM/ARMSubtarget.h (revision 96766)
+++ lib/Target/ARM/ARMSubtarget.h (working copy)
@@ -26,7 +26,7 @@
class ARMSubtarget : public TargetSubtarget {
protected:
enum ARMArchEnum {
- V4T, V5T, V5TE, V6, V6T2, V7A
+ V4, V4T, V5T, V5TE, V6, V6T2, V7A
};
enum ARMFPEnum {
@@ -38,7 +38,7 @@
Thumb2
};
- /// ARMArchVersion - ARM architecture version: V4T (base), V5T, V5TE,
+ /// ARMArchVersion - ARM architecture version: V4, V4T (base), V5T, V5TE,
/// V6, V6T2, V7A.
ARMArchEnum ARMArchVersion;
Index: lib/Target/ARM/ARMBaseInstrInfo.h
===================================================================
--- lib/Target/ARM/ARMBaseInstrInfo.h (revision 96766)
+++ lib/Target/ARM/ARMBaseInstrInfo.h (working copy)
@@ -332,7 +332,7 @@
static inline
bool isIndirectBranchOpcode(int Opc) {
- return Opc == ARM::BRIND || Opc == ARM::tBRIND;
+ return Opc == ARM::BRIND || Opc == ARM::MOVPCRX || Opc == ARM::tBRIND;
}
/// getInstrPredicate - If instruction is predicated, returns its predicate
-------------- next part --------------
Index: gcc/config/arm/arm.h
===================================================================
--- gcc/config/arm/arm.h (revision 96176)
+++ gcc/config/arm/arm.h (working copy)
@@ -3519,7 +3519,9 @@
: (arm_arch5 \
? "armv5" \
: (arm_arch4t \
- ? "armv4t" : "")))))))
+ ? "armv4t" \
+ : (arm_arch4 \
+ ? "armv4" : ""))))))))
#define LLVM_SET_MACHINE_OPTIONS(argvec) \
if (TARGET_SOFT_FLOAT) \
Index: gcc/config/arm/libunwind.S
===================================================================
--- gcc/config/arm/libunwind.S (revision 96176)
+++ gcc/config/arm/libunwind.S (working copy)
@@ -167,21 +167,37 @@
RET
ARM_FUNC_START gnu_Unwind_Restore_WMMXC
+#if __ARM_ARCH__ > 4
/* Use the generic coprocessor form so that gas doesn't complain
on non-iWMMXt targets. */
ldc2 p1, cr8, [r0], #4 /* wldrw wcgr0, [r0], #4 */
ldc2 p1, cr9, [r0], #4 /* wldrw wcgr1, [r0], #4 */
ldc2 p1, cr10, [r0], #4 /* wldrw wcgr2, [r0], #4 */
ldc2 p1, cr11, [r0], #4 /* wldrw wcgr3, [r0], #4 */
+#else
+ /* ldc2 is not valid pre-ARMv5 */
+ .word 0xfcb08101
+ .word 0xfcb09101
+ .word 0xfcb0a101
+ .word 0xfcb0b101
+#endif
RET
ARM_FUNC_START gnu_Unwind_Save_WMMXC
+#if __ARM_ARCH__ > 4
/* Use the generic coprocessor form so that gas doesn't complain
on non-iWMMXt targets. */
stc2 p1, cr8, [r0], #4 /* wstrw wcgr0, [r0], #4 */
stc2 p1, cr9, [r0], #4 /* wstrw wcgr1, [r0], #4 */
stc2 p1, cr10, [r0], #4 /* wstrw wcgr2, [r0], #4 */
stc2 p1, cr11, [r0], #4 /* wstrw wcgr3, [r0], #4 */
+#else
+ /* stc2 is not valid pre-ARMv5 */
+ .word 0xfca08101
+ .word 0xfca09101
+ .word 0xfca0a101
+ .word 0xfca0b101
+#endif
RET
/* APPLE LOCAL end v7 support. Merge from Codesourcery */
From gohman at apple.com Mon Feb 22 16:05:18 2010
From: gohman at apple.com (Dan Gohman)
Date: Mon, 22 Feb 2010 22:05:18 -0000
Subject: [llvm-commits] [llvm] r96807 -
/llvm/trunk/lib/VMCore/ConstantFold.cpp
Message-ID: <20100222220518.48B322A6C12E@llvm.org>
Author: djg
Date: Mon Feb 22 16:05:18 2010
New Revision: 96807
URL: http://llvm.org/viewvc/llvm-project?rev=96807&view=rev
Log:
Use Instruction::isCommutative instead of duplicating it.
Modified:
llvm/trunk/lib/VMCore/ConstantFold.cpp
Modified: llvm/trunk/lib/VMCore/ConstantFold.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/ConstantFold.cpp?rev=96807&r1=96806&r2=96807&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/ConstantFold.cpp (original)
+++ llvm/trunk/lib/VMCore/ConstantFold.cpp Mon Feb 22 16:05:18 2010
@@ -1364,31 +1364,8 @@
} else if (isa(C2)) {
// If C2 is a constant expr and C1 isn't, flop them around and fold the
// other way if possible.
- switch (Opcode) {
- case Instruction::Add:
- case Instruction::FAdd:
- case Instruction::Mul:
- case Instruction::FMul:
- case Instruction::And:
- case Instruction::Or:
- case Instruction::Xor:
- // No change of opcode required.
+ if (Instruction::isCommutative(Opcode))
return ConstantFoldBinaryInstruction(Opcode, C2, C1);
-
- case Instruction::Shl:
- case Instruction::LShr:
- case Instruction::AShr:
- case Instruction::Sub:
- case Instruction::FSub:
- case Instruction::SDiv:
- case Instruction::UDiv:
- case Instruction::FDiv:
- case Instruction::URem:
- case Instruction::SRem:
- case Instruction::FRem:
- default: // These instructions cannot be flopped around.
- break;
- }
}
// i1 can be simplified in many cases.
From gohman at apple.com Mon Feb 22 16:07:27 2010
From: gohman at apple.com (Dan Gohman)
Date: Mon, 22 Feb 2010 22:07:27 -0000
Subject: [llvm-commits] [llvm] r96808 -
/llvm/trunk/lib/Analysis/ConstantFolding.cpp
Message-ID: <20100222220727.3660D2A6C12E@llvm.org>
Author: djg
Date: Mon Feb 22 16:07:27 2010
New Revision: 96808
URL: http://llvm.org/viewvc/llvm-project?rev=96808&view=rev
Log:
Minor formatting cleanup.
Modified:
llvm/trunk/lib/Analysis/ConstantFolding.cpp
Modified: llvm/trunk/lib/Analysis/ConstantFolding.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ConstantFolding.cpp?rev=96808&r1=96807&r2=96808&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/ConstantFolding.cpp (original)
+++ llvm/trunk/lib/Analysis/ConstantFolding.cpp Mon Feb 22 16:07:27 2010
@@ -814,8 +814,7 @@
Constant::getNullValue(CE->getType()),
ConstantInt::get(ElTy->getContext(), ElemIdx)
};
- return
- ConstantExpr::getGetElementPtr(GV, &Index[0], 2);
+ return ConstantExpr::getGetElementPtr(GV, &Index[0], 2);
}
}
}
From daniel at zuster.org Mon Feb 22 16:08:57 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Mon, 22 Feb 2010 22:08:57 -0000
Subject: [llvm-commits] [llvm] r96809 -
/llvm/trunk/lib/MC/MCMachOStreamer.cpp
Message-ID: <20100222220857.760272A6C12E@llvm.org>
Author: ddunbar
Date: Mon Feb 22 16:08:57 2010
New Revision: 96809
URL: http://llvm.org/viewvc/llvm-project?rev=96809&view=rev
Log:
MC/Mach-O: Remove non-sensical comment, and add a missing AddValueSymbols call.
Modified:
llvm/trunk/lib/MC/MCMachOStreamer.cpp
Modified: llvm/trunk/lib/MC/MCMachOStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCMachOStreamer.cpp?rev=96809&r1=96808&r2=96809&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCMachOStreamer.cpp (original)
+++ llvm/trunk/lib/MC/MCMachOStreamer.cpp Mon Feb 22 16:08:57 2010
@@ -333,15 +333,13 @@
void MCMachOStreamer::EmitValue(const MCExpr *Value, unsigned Size,
unsigned AddrSpace) {
- // Assume the front-end will have evaluate things absolute expressions, so
- // just create data + fixup.
MCDataFragment *DF = dyn_cast_or_null(getCurrentFragment());
if (!DF)
DF = new MCDataFragment(CurSectionData);
// Avoid fixups when possible.
int64_t AbsValue;
- if (Value->EvaluateAsAbsolute(AbsValue)) {
+ if (AddValueSymbols(Value)->EvaluateAsAbsolute(AbsValue)) {
// FIXME: Endianness assumption.
for (unsigned i = 0; i != Size; ++i)
DF->getContents().push_back(uint8_t(AbsValue >> (i * 8)));
From sabre at nondot.org Mon Feb 22 16:14:47 2010
From: sabre at nondot.org (Chris Lattner)
Date: Mon, 22 Feb 2010 22:14:47 -0000
Subject: [llvm-commits] [llvm] r96810 - in /llvm/trunk/lib/Target/PIC16:
PIC16ISelDAGToDAG.cpp PIC16ISelDAGToDAG.h
Message-ID: <20100222221447.503742A6C12E@llvm.org>
Author: lattner
Date: Mon Feb 22 16:14:47 2010
New Revision: 96810
URL: http://llvm.org/viewvc/llvm-project?rev=96810&view=rev
Log:
move #includes earlier.
Modified:
llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.cpp
llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.h
Modified: llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.cpp?rev=96810&r1=96809&r2=96810&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.cpp Mon Feb 22 16:14:47 2010
@@ -15,9 +15,8 @@
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
-#include "PIC16ISelDAGToDAG.h"
#include "llvm/Support/Debug.h"
-
+#include "PIC16ISelDAGToDAG.h"
using namespace llvm;
/// createPIC16ISelDag - This pass converts a legalized DAG into a
Modified: llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.h?rev=96810&r1=96809&r2=96810&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.h (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.h Mon Feb 22 16:14:47 2010
@@ -19,6 +19,8 @@
#include "PIC16TargetMachine.h"
#include "llvm/CodeGen/SelectionDAGISel.h"
#include "llvm/Support/Compiler.h"
+#include "llvm/Support/raw_ostream.h"
+#include "llvm/Support/Debug.h"
#include "llvm/Intrinsics.h"
using namespace llvm;
From sabre at nondot.org Mon Feb 22 16:15:05 2010
From: sabre at nondot.org (Chris Lattner)
Date: Mon, 22 Feb 2010 22:15:05 -0000
Subject: [llvm-commits] [llvm] r96811 -
/llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.cpp
Message-ID: <20100222221505.32C5F2A6C12E@llvm.org>
Author: lattner
Date: Mon Feb 22 16:15:05 2010
New Revision: 96811
URL: http://llvm.org/viewvc/llvm-project?rev=96811&view=rev
Log:
remove dupes now.
Modified:
llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.cpp
Modified: llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.cpp?rev=96811&r1=96810&r2=96811&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/PIC16/PIC16ISelDAGToDAG.cpp Mon Feb 22 16:15:05 2010
@@ -14,8 +14,6 @@
#define DEBUG_TYPE "pic16-isel"
#include "llvm/Support/ErrorHandling.h"
-#include "llvm/Support/raw_ostream.h"
-#include "llvm/Support/Debug.h"
#include "PIC16ISelDAGToDAG.h"
using namespace llvm;
From sabre at nondot.org Mon Feb 22 16:15:39 2010
From: sabre at nondot.org (Chris Lattner)
Date: Mon, 22 Feb 2010 22:15:39 -0000
Subject: [llvm-commits] [llvm] r96812 -
/llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
Message-ID: <20100222221539.79D882A6C12E@llvm.org>
Author: lattner
Date: Mon Feb 22 16:15:39 2010
New Revision: 96812
URL: http://llvm.org/viewvc/llvm-project?rev=96812&view=rev
Log:
add some debug hooks for tracking the behavior of the isel.
Modified:
llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
Modified: llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h?rev=96812&r1=96811&r2=96812&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h (original)
+++ llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h Mon Feb 22 16:15:39 2010
@@ -336,6 +336,10 @@
// update the chain results when the pattern is complete.
SmallVector ChainNodesMatched;
+ DEBUG(errs() << "ISEL: Starting pattern match on root node: ";
+ NodeToMatch->dump(CurDAG);
+ errs() << '\n');
+
// Interpreter starts at opcode #0.
unsigned MatcherIndex = 0;
while (1) {
@@ -722,6 +726,8 @@
std::copy(MatchedMemRefs.begin(), MatchedMemRefs.end(), MemRefs);
Res->setMemRefs(MemRefs, MemRefs + MatchedMemRefs.size());
}
+
+ DEBUG(errs() << " Created node: "; Res->dump(CurDAG); errs() << "\n");
continue;
}
@@ -777,6 +783,9 @@
assert(NodeToMatch->use_empty() &&
"Didn't replace all uses of the node?");
+
+ DEBUG(errs() << "ISEL: Match complete!\n");
+
// FIXME: We just return here, which interacts correctly with SelectRoot
// above. We should fix this to not return an SDNode* anymore.
return 0;
@@ -794,6 +803,9 @@
RecordedNodes.resize(LastScope.NumRecordedNodes);
NodeStack.resize(LastScope.NodeStackSize);
N = NodeStack.back();
+
+ DEBUG(errs() << " Match failed at index " << MatcherIndex
+ << " continuing at " << LastScope.FailIndex << "\n");
if (LastScope.NumMatchedMemRefs != MatchedMemRefs.size())
MatchedMemRefs.resize(LastScope.NumMatchedMemRefs);
From sabre at nondot.org Mon Feb 22 16:18:06 2010
From: sabre at nondot.org (Chris Lattner)
Date: Mon, 22 Feb 2010 22:18:06 -0000
Subject: [llvm-commits] [llvm] r96813 -
/llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp
Message-ID: <20100222221806.0CA032A6C12E@llvm.org>
Author: lattner
Date: Mon Feb 22 16:18:05 2010
New Revision: 96813
URL: http://llvm.org/viewvc/llvm-project?rev=96813&view=rev
Log:
When matching patterns that have a complex pattern as their root, make
sure to only run the complex pattern on nodes where the target opts in.
This patch only handles targets with one opcode specified so far, but
fixes 16 failures, only 34 left.
Modified:
llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp
Modified: llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp?rev=96813&r1=96812&r2=96813&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp (original)
+++ llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp Mon Feb 22 16:18:05 2010
@@ -239,9 +239,24 @@
errs() << "We expect complex pattern uses to have names: " << *N << "\n";
exit(1);
}
-
+
// Handle complex pattern.
const ComplexPattern &CP = CGP.getComplexPattern(LeafRec);
+
+ // If we're at the root of the pattern, we have to check that the opcode
+ // is a one of the ones requested to be matched.
+ if (N == Pattern.getSrcPattern()) {
+ const std::vector &OpNodes = CP.getRootNodes();
+ if (OpNodes.size() == 1) {
+ StringRef OpName = CGP.getSDNodeInfo(OpNodes[0]).getEnumName();
+ AddMatcherNode(new CheckOpcodeMatcherNode(OpName));
+ } else if (!OpNodes.empty()) {
+ for (unsigned j = 0, e = OpNodes.size(); j != e; j++) {
+ // .getOpcodeName(OpNodes[j], CGP)
+ }
+ }
+ }
+
AddMatcherNode(new CheckComplexPatMatcherNode(CP));
// If the complex pattern has a chain, then we need to keep track of the
From sabre at nondot.org Mon Feb 22 16:30:38 2010
From: sabre at nondot.org (Chris Lattner)
Date: Mon, 22 Feb 2010 22:30:38 -0000
Subject: [llvm-commits] [llvm] r96814 - in /llvm/trunk:
include/llvm/CodeGen/DAGISelHeader.h utils/TableGen/DAGISelMatcher.cpp
utils/TableGen/DAGISelMatcher.h utils/TableGen/DAGISelMatcherEmitter.cpp
utils/TableGen/DAGISelMatcherGen.cpp
Message-ID: <20100222223038.18A7D2A6C12E@llvm.org>
Author: lattner
Date: Mon Feb 22 16:30:37 2010
New Revision: 96814
URL: http://llvm.org/viewvc/llvm-project?rev=96814&view=rev
Log:
add a new CheckMultiOpcode opcode for checking that a node
has one of the list of acceptable opcodes for a complex
pattern. This fixes 4 regtest failures.
Modified:
llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
llvm/trunk/utils/TableGen/DAGISelMatcher.cpp
llvm/trunk/utils/TableGen/DAGISelMatcher.h
llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp
llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp
Modified: llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h?rev=96814&r1=96813&r2=96814&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h (original)
+++ llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h Mon Feb 22 16:30:37 2010
@@ -211,6 +211,7 @@
OPC_CheckPatternPredicate,
OPC_CheckPredicate,
OPC_CheckOpcode,
+ OPC_CheckMultiOpcode,
OPC_CheckType,
OPC_CheckInteger1, OPC_CheckInteger2, OPC_CheckInteger4, OPC_CheckInteger8,
OPC_CheckCondCode,
@@ -410,6 +411,16 @@
case OPC_CheckOpcode:
if (N->getOpcode() != MatcherTable[MatcherIndex++]) break;
continue;
+
+ case OPC_CheckMultiOpcode: {
+ unsigned NumOps = MatcherTable[MatcherIndex++];
+ bool OpcodeEquals = false;
+ for (unsigned i = 0; i != NumOps; ++i)
+ OpcodeEquals |= N->getOpcode() == MatcherTable[MatcherIndex++];
+ if (!OpcodeEquals) break;
+ continue;
+ }
+
case OPC_CheckType: {
MVT::SimpleValueType VT =
(MVT::SimpleValueType)MatcherTable[MatcherIndex++];
Modified: llvm/trunk/utils/TableGen/DAGISelMatcher.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/DAGISelMatcher.cpp?rev=96814&r1=96813&r2=96814&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/DAGISelMatcher.cpp (original)
+++ llvm/trunk/utils/TableGen/DAGISelMatcher.cpp Mon Feb 22 16:30:37 2010
@@ -76,6 +76,11 @@
printNext(OS, indent);
}
+void CheckMultiOpcodeMatcherNode::print(raw_ostream &OS, unsigned indent) const {
+ OS.indent(indent) << "CheckMultiOpcode \n";
+ printNext(OS, indent);
+}
+
void CheckTypeMatcherNode::print(raw_ostream &OS, unsigned indent) const {
OS.indent(indent) << "CheckType " << getEnumName(Type) << '\n';
printNext(OS, indent);
Modified: llvm/trunk/utils/TableGen/DAGISelMatcher.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/DAGISelMatcher.h?rev=96814&r1=96813&r2=96814&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/DAGISelMatcher.h (original)
+++ llvm/trunk/utils/TableGen/DAGISelMatcher.h Mon Feb 22 16:30:37 2010
@@ -51,6 +51,7 @@
CheckPatternPredicate,
CheckPredicate, // Fail if node predicate fails.
CheckOpcode, // Fail if not opcode.
+ CheckMultiOpcode, // Fail if not in opcode list.
CheckType, // Fail if not correct type.
CheckInteger, // Fail if wrong val.
CheckCondCode, // Fail if not condcode.
@@ -262,6 +263,26 @@
virtual void print(raw_ostream &OS, unsigned indent = 0) const;
};
+/// CheckMultiOpcodeMatcherNode - This checks to see if the current node has one
+/// of the specified opcode, if not it fails to match.
+class CheckMultiOpcodeMatcherNode : public MatcherNode {
+ SmallVector OpcodeNames;
+public:
+ CheckMultiOpcodeMatcherNode(const StringRef *opcodes, unsigned numops)
+ : MatcherNode(CheckMultiOpcode), OpcodeNames(opcodes, opcodes+numops) {}
+
+ unsigned getNumOpcodeNames() const { return OpcodeNames.size(); }
+ StringRef getOpcodeName(unsigned i) const { return OpcodeNames[i]; }
+
+ static inline bool classof(const MatcherNode *N) {
+ return N->getKind() == CheckMultiOpcode;
+ }
+
+ virtual void print(raw_ostream &OS, unsigned indent = 0) const;
+};
+
+
+
/// CheckTypeMatcherNode - This checks to see if the current node has the
/// specified type, if not it fails to match.
class CheckTypeMatcherNode : public MatcherNode {
Modified: llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp?rev=96814&r1=96813&r2=96814&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp (original)
+++ llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp Mon Feb 22 16:30:37 2010
@@ -181,6 +181,15 @@
<< cast(N)->getOpcodeName() << ",\n";
return 2;
+ case MatcherNode::CheckMultiOpcode: {
+ const CheckMultiOpcodeMatcherNode *CMO=cast(N);
+ OS << "OPC_CheckMultiOpcode, " << CMO->getNumOpcodeNames() << ", ";
+ for (unsigned i = 0, e = CMO->getNumOpcodeNames(); i != e; ++i)
+ OS << CMO->getOpcodeName(i) << ", ";
+ OS << '\n';
+ return 2 + CMO->getNumOpcodeNames();
+ }
+
case MatcherNode::CheckType:
OS << "OPC_CheckType, "
<< getEnumName(cast(N)->getType()) << ",\n";
Modified: llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp?rev=96814&r1=96813&r2=96814&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp (original)
+++ llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp Mon Feb 22 16:30:37 2010
@@ -251,9 +251,11 @@
StringRef OpName = CGP.getSDNodeInfo(OpNodes[0]).getEnumName();
AddMatcherNode(new CheckOpcodeMatcherNode(OpName));
} else if (!OpNodes.empty()) {
- for (unsigned j = 0, e = OpNodes.size(); j != e; j++) {
- // .getOpcodeName(OpNodes[j], CGP)
- }
+ SmallVector OpNames;
+ for (unsigned i = 0, e = OpNodes.size(); i != e; i++)
+ OpNames.push_back(CGP.getSDNodeInfo(OpNodes[i]).getEnumName());
+ AddMatcherNode(new CheckMultiOpcodeMatcherNode(OpNames.data(),
+ OpNames.size()));
}
}
From sabre at nondot.org Mon Feb 22 16:37:11 2010
From: sabre at nondot.org (Chris Lattner)
Date: Mon, 22 Feb 2010 22:37:11 -0000
Subject: [llvm-commits] [llvm] r96815 -
/llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
Message-ID: <20100222223711.5AD2D2A6C12E@llvm.org>
Author: lattner
Date: Mon Feb 22 16:37:11 2010
New Revision: 96815
URL: http://llvm.org/viewvc/llvm-project?rev=96815&view=rev
Log:
expand my hack to work with nodes that have flags but no chains and the
isel doesn't know the correct # results. This fixes 8 codegen tests,
down to 22 failures.
Modified:
llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
Modified: llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h?rev=96815&r1=96814&r2=96815&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h (original)
+++ llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h Mon Feb 22 16:37:11 2010
@@ -758,7 +758,8 @@
// allow us to stop encoding #results in OPC_CompleteMatch's table
// entry.
if (NodeToMatch->getNumValues() <= i ||
- NodeToMatch->getValueType(i) == MVT::Other)
+ NodeToMatch->getValueType(i) == MVT::Other ||
+ NodeToMatch->getValueType(i) == MVT::Flag)
break;
assert((NodeToMatch->getValueType(i) == Res.getValueType() ||
NodeToMatch->getValueType(i) == MVT::iPTR ||
From gohman at apple.com Mon Feb 22 16:43:24 2010
From: gohman at apple.com (Dan Gohman)
Date: Mon, 22 Feb 2010 22:43:24 -0000
Subject: [llvm-commits] [llvm] r96816 - in /llvm/trunk:
lib/Analysis/ConstantFolding.cpp lib/VMCore/ConstantFold.cpp
test/CodeGen/X86/ptrtoint-constexpr.ll
Message-ID: <20100222224324.2EBFA2A6C12E@llvm.org>
Author: djg
Date: Mon Feb 22 16:43:23 2010
New Revision: 96816
URL: http://llvm.org/viewvc/llvm-project?rev=96816&view=rev
Log:
Canonicalize ConstantInts to the right operand of commutative
operators.
The test difference is just due to the multiplication operands
being commuted (and thus requiring a more elaborate match). In
optimized code, that expression would be folded.
Modified:
llvm/trunk/lib/Analysis/ConstantFolding.cpp
llvm/trunk/lib/VMCore/ConstantFold.cpp
llvm/trunk/test/CodeGen/X86/ptrtoint-constexpr.ll
Modified: llvm/trunk/lib/Analysis/ConstantFolding.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ConstantFolding.cpp?rev=96816&r1=96815&r2=96816&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/ConstantFolding.cpp (original)
+++ llvm/trunk/lib/Analysis/ConstantFolding.cpp Mon Feb 22 16:43:23 2010
@@ -794,8 +794,8 @@
// it is casted back to a pointer, see if the expression can be
// converted into a GEP.
if (CE->getOpcode() == Instruction::Add)
- if (ConstantInt *L = dyn_cast(CE->getOperand(0)))
- if (ConstantExpr *R = dyn_cast(CE->getOperand(1)))
+ if (ConstantInt *L = dyn_cast(CE->getOperand(1)))
+ if (ConstantExpr *R = dyn_cast(CE->getOperand(0)))
if (R->getOpcode() == Instruction::PtrToInt)
if (GlobalVariable *GV =
dyn_cast(R->getOperand(0))) {
Modified: llvm/trunk/lib/VMCore/ConstantFold.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/ConstantFold.cpp?rev=96816&r1=96815&r2=96816&view=diff
==============================================================================
--- llvm/trunk/lib/VMCore/ConstantFold.cpp (original)
+++ llvm/trunk/lib/VMCore/ConstantFold.cpp Mon Feb 22 16:43:23 2010
@@ -1105,6 +1105,10 @@
return ConstantExpr::getLShr(C1, C2);
break;
}
+ } else if (isa(C1)) {
+ // If C1 is a ConstantInt and C2 is not, swap the operands.
+ if (Instruction::isCommutative(Opcode))
+ return ConstantExpr::get(Opcode, C2, C1);
}
// At this point we know neither constant is an UndefValue.
Modified: llvm/trunk/test/CodeGen/X86/ptrtoint-constexpr.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/ptrtoint-constexpr.ll?rev=96816&r1=96815&r2=96816&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/ptrtoint-constexpr.ll (original)
+++ llvm/trunk/test/CodeGen/X86/ptrtoint-constexpr.ll Mon Feb 22 16:43:23 2010
@@ -9,6 +9,6 @@
; CHECK: .globl x
; CHECK: x:
-; CHECK: .quad 3
+; CHECK: .quad ((0+1)&4294967295)*3
@x = global i64 mul (i64 3, i64 ptrtoint (i2* getelementptr (i2* null, i64 1) to i64))
From grosbach at apple.com Mon Feb 22 16:47:47 2010
From: grosbach at apple.com (Jim Grosbach)
Date: Mon, 22 Feb 2010 22:47:47 -0000
Subject: [llvm-commits] [llvm] r96817 -
/llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp
Message-ID: <20100222224747.282E62A6C12F@llvm.org>
Author: grosbach
Date: Mon Feb 22 16:47:46 2010
New Revision: 96817
URL: http://llvm.org/viewvc/llvm-project?rev=96817&view=rev
Log:
The predicate index isn't fixed, so scan for it to make sure we get the proper
value.
Thumb2 uses the tADJCALLSTACK* instructions, and doesn't need t2 versions, so
remove the FIXME entry.
Modified:
llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp
Modified: llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp?rev=96817&r1=96816&r2=96817&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp Mon Feb 22 16:47:46 2010
@@ -1124,8 +1124,9 @@
// Replace the pseudo instruction with a new instruction...
unsigned Opc = Old->getOpcode();
- ARMCC::CondCodes Pred = (ARMCC::CondCodes)Old->getOperand(1).getImm();
- // FIXME: Thumb2 version of ADJCALLSTACKUP and ADJCALLSTACKDOWN?
+ int PIdx = Old->findFirstPredOperandIdx();
+ ARMCC::CondCodes Pred = (PIdx == -1)
+ ? ARMCC::AL : (ARMCC::CondCodes)Old->getOperand(PIdx).getImm();
if (Opc == ARM::ADJCALLSTACKDOWN || Opc == ARM::tADJCALLSTACKDOWN) {
// Note: PredReg is operand 2 for ADJCALLSTACKDOWN.
unsigned PredReg = Old->getOperand(2).getReg();
From grosbach at apple.com Mon Feb 22 16:54:55 2010
From: grosbach at apple.com (Jim Grosbach)
Date: Mon, 22 Feb 2010 22:54:55 -0000
Subject: [llvm-commits] [llvm] r96818 -
/llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp
Message-ID: <20100222225456.020A82A6C12F@llvm.org>
Author: grosbach
Date: Mon Feb 22 16:54:55 2010
New Revision: 96818
URL: http://llvm.org/viewvc/llvm-project?rev=96818&view=rev
Log:
Clean up a bit and fix for when SPAdj != 0
Modified:
llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp
Modified: llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp?rev=96818&r1=96817&r2=96818&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp Mon Feb 22 16:54:55 2010
@@ -1150,7 +1150,6 @@
MachineInstr &MI = *II;
MachineBasicBlock &MBB = *MI.getParent();
MachineFunction &MF = *MBB.getParent();
- const MachineFrameInfo *MFI = MF.getFrameInfo();
ARMFunctionInfo *AFI = MF.getInfo();
assert(!AFI->isThumb1OnlyFunction() &&
"This eliminateFrameIndex does not support Thumb1!");
@@ -1161,12 +1160,12 @@
}
int FrameIndex = MI.getOperand(i).getIndex();
- int Offset = MFI->getObjectOffset(FrameIndex) + MFI->getStackSize() + SPAdj;
unsigned FrameReg;
- Offset = getFrameIndexReference(MF, FrameIndex, FrameReg);
+ int Offset = getFrameIndexReference(MF, FrameIndex, FrameReg);
if (FrameReg != ARM::SP)
SPAdj = 0;
+ Offset += SPAdj;
// Modify MI as necessary to handle as much of 'Offset' as possible
bool Done = false;
From gohman at apple.com Mon Feb 22 17:07:52 2010
From: gohman at apple.com (Dan Gohman)
Date: Mon, 22 Feb 2010 23:07:52 -0000
Subject: [llvm-commits] [llvm] r96820 -
/llvm/trunk/test/Transforms/InstCombine/constant-fold-ptr-casts.ll
Message-ID: <20100222230752.5D1BC2A6C12E@llvm.org>
Author: djg
Date: Mon Feb 22 17:07:52 2010
New Revision: 96820
URL: http://llvm.org/viewvc/llvm-project?rev=96820&view=rev
Log:
Add a test for canonicalizing ConstantExpr operands.
Modified:
llvm/trunk/test/Transforms/InstCombine/constant-fold-ptr-casts.ll
Modified: llvm/trunk/test/Transforms/InstCombine/constant-fold-ptr-casts.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/constant-fold-ptr-casts.ll?rev=96820&r1=96819&r2=96820&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/constant-fold-ptr-casts.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/constant-fold-ptr-casts.ll Mon Feb 22 17:07:52 2010
@@ -1,4 +1,4 @@
-; RUN: opt < %s -instcombine -S | grep {ret i32 2143034560}
+; RUN: opt < %s -instcombine -S | grep {ret i32 2143034560} | count 2
; Instcombine should be able to completely fold this code.
@@ -16,3 +16,12 @@
ret i32 %t1
}
+define i32 @goo() nounwind {
+entry:
+ %tmp87.2 = load i64* inttoptr (i32 add (i32 ptrtoint ([3 x i64]* @bar to i32), i32 16) to i64*), align 8
+ %t0 = bitcast i64 %tmp87.2 to double
+ %tmp9192.2 = fptrunc double %t0 to float
+ %t1 = bitcast float %tmp9192.2 to i32
+ ret i32 %t1
+}
+
From grosbach at apple.com Mon Feb 22 17:10:38 2010
From: grosbach at apple.com (Jim Grosbach)
Date: Mon, 22 Feb 2010 23:10:38 -0000
Subject: [llvm-commits] [llvm] r96822 - in /llvm/trunk:
include/llvm/Target/TargetRegisterInfo.h
lib/CodeGen/PrologEpilogInserter.cpp lib/Target/ARM/ARMBaseRegisterInfo.cpp
lib/Target/ARM/ARMBaseRegisterInfo.h lib/Target/ARM/ARMInstrInfo.td
lib/Target/ARM/ARMInstrThumb.td
Message-ID: <20100222231038.C534C2A6C12E@llvm.org>
Author: grosbach
Date: Mon Feb 22 17:10:38 2010
New Revision: 96822
URL: http://llvm.org/viewvc/llvm-project?rev=96822&view=rev
Log:
Updated version of r96634 (which was reverted due to failing 176.gcc and
126.gcc nightly tests. These failures uncovered latent bugs that machine DCE
could remove one half of a stack adjust down/up pair, causing PEI to assert.
This update fixes that, and the tests now pass.
Modified:
llvm/trunk/include/llvm/Target/TargetRegisterInfo.h
llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp
llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp
llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.h
llvm/trunk/lib/Target/ARM/ARMInstrInfo.td
llvm/trunk/lib/Target/ARM/ARMInstrThumb.td
Modified: llvm/trunk/include/llvm/Target/TargetRegisterInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetRegisterInfo.h?rev=96822&r1=96821&r2=96822&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Target/TargetRegisterInfo.h (original)
+++ llvm/trunk/include/llvm/Target/TargetRegisterInfo.h Mon Feb 22 17:10:38 2010
@@ -587,6 +587,17 @@
return !hasFP(MF);
}
+ /// canSimplifyCallFramePseudos - When possible, it's best to simplify the
+ /// call frame pseudo ops before doing frame index elimination. This is
+ /// possible only when frame index references between the pseudos won't
+ /// need adjusted for the call frame adjustments. Normally, that's true
+ /// if the function has a reserved call frame or a frame pointer. Some
+ /// targets (Thumb2, for example) may have more complicated criteria,
+ /// however, and can override this behavior.
+ virtual bool canSimplifyCallFramePseudos(MachineFunction &MF) const {
+ return hasReservedCallFrame(MF) || hasFP(MF);
+ }
+
/// hasReservedSpillSlot - Return true if target has reserved a spill slot in
/// the stack frame of the given function for the specified register. e.g. On
/// x86, if the frame register is required, the first fixed stack object is
Modified: llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp?rev=96822&r1=96821&r2=96822&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp (original)
+++ llvm/trunk/lib/CodeGen/PrologEpilogInserter.cpp Mon Feb 22 17:10:38 2010
@@ -175,9 +175,10 @@
MachineBasicBlock::iterator I = *i;
// If call frames are not being included as part of the stack frame, and
- // there is no dynamic allocation (therefore referencing frame slots off
- // sp), leave the pseudo ops alone. We'll eliminate them later.
- if (RegInfo->hasReservedCallFrame(Fn) || RegInfo->hasFP(Fn))
+ // the target doesn't indicate otherwise, remove the call frame pseudos
+ // here. The sub/add sp instruction pairs are still inserted, but we don't
+ // need to track the SP adjustment for frame index elimination.
+ if (RegInfo->canSimplifyCallFramePseudos(Fn))
RegInfo->eliminateCallFramePseudoInstr(Fn, *I->getParent(), I);
}
}
Modified: llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp?rev=96822&r1=96821&r2=96822&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.cpp Mon Feb 22 17:10:38 2010
@@ -1085,6 +1085,16 @@
return !MF.getFrameInfo()->hasVarSizedObjects();
}
+// canSimplifyCallFramePseudos - If there is a reserved call frame, the
+// call frame pseudos can be simplified. Unlike most targets, having a FP
+// is not sufficient here since we still may reference some objects via SP
+// even when FP is available in Thumb2 mode.
+bool ARMBaseRegisterInfo::
+canSimplifyCallFramePseudos(MachineFunction &MF) const {
+ ARMFunctionInfo *AFI = MF.getInfo();
+ return hasReservedCallFrame(MF) || (AFI->isThumb1OnlyFunction() && hasFP(MF));
+}
+
static void
emitSPUpdate(bool isARM,
MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI,
Modified: llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.h?rev=96822&r1=96821&r2=96822&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.h (original)
+++ llvm/trunk/lib/Target/ARM/ARMBaseRegisterInfo.h Mon Feb 22 17:10:38 2010
@@ -138,6 +138,7 @@
virtual bool requiresFrameIndexScavenging(const MachineFunction &MF) const;
virtual bool hasReservedCallFrame(MachineFunction &MF) const;
+ virtual bool canSimplifyCallFramePseudos(MachineFunction &MF) const;
virtual void eliminateCallFramePseudoInstr(MachineFunction &MF,
MachineBasicBlock &MBB,
Modified: llvm/trunk/lib/Target/ARM/ARMInstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrInfo.td?rev=96822&r1=96821&r2=96822&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrInfo.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrInfo.td Mon Feb 22 17:10:38 2010
@@ -635,7 +635,10 @@
i32imm:$size), NoItinerary,
"${instid:label} ${cpidx:cpentry}", []>;
-let Defs = [SP], Uses = [SP] in {
+// FIXME: Marking these as hasSideEffects is necessary to prevent machine DCE
+// from removing one half of the matched pairs. That breaks PEI, which assumes
+// these will always be in pairs, and asserts if it finds otherwise. Better way?
+let Defs = [SP], Uses = [SP], hasSideEffects = 1 in {
def ADJCALLSTACKUP :
PseudoInst<(outs), (ins i32imm:$amt1, i32imm:$amt2, pred:$p), NoItinerary,
"@ ADJCALLSTACKUP $amt1",
Modified: llvm/trunk/lib/Target/ARM/ARMInstrThumb.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrThumb.td?rev=96822&r1=96821&r2=96822&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrThumb.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrThumb.td Mon Feb 22 17:10:38 2010
@@ -120,7 +120,10 @@
// Miscellaneous Instructions.
//
-let Defs = [SP], Uses = [SP] in {
+// FIXME: Marking these as hasSideEffects is necessary to prevent machine DCE
+// from removing one half of the matched pairs. That breaks PEI, which assumes
+// these will always be in pairs, and asserts if it finds otherwise. Better way?
+let Defs = [SP], Uses = [SP], hasSideEffects = 1 in {
def tADJCALLSTACKUP :
PseudoInst<(outs), (ins i32imm:$amt1, i32imm:$amt2), NoItinerary,
"@ tADJCALLSTACKUP $amt1",
From sabre at nondot.org Mon Feb 22 17:33:44 2010
From: sabre at nondot.org (Chris Lattner)
Date: Mon, 22 Feb 2010 23:33:44 -0000
Subject: [llvm-commits] [llvm] r96824 -
/llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp
Message-ID: <20100222233344.3AB7D2A6C12E@llvm.org>
Author: lattner
Date: Mon Feb 22 17:33:44 2010
New Revision: 96824
URL: http://llvm.org/viewvc/llvm-project?rev=96824&view=rev
Log:
Change ComplexPattern handling to push the node being matched as
well as the operands produced when the pattern is matched. This
allows CheckSame to work correctly when matching replicated
names involving ComplexPatterns. This fixes a bunch of MSP430
failures, we're down to 13 failures, two of which are
due to a sched bug.
Modified:
llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp
Modified: llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp?rev=96824&r1=96823&r2=96824&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp (original)
+++ llvm/trunk/utils/TableGen/DAGISelMatcherGen.cpp Mon Feb 22 17:33:44 2010
@@ -259,8 +259,15 @@
}
}
+ // Emit a CheckComplexPat operation, which does the match (aborting if it
+ // fails) and pushes the matched operands onto the recorded nodes list.
AddMatcherNode(new CheckComplexPatMatcherNode(CP));
+ // Record the right number of operands.
+ NextRecordedOperandNo += CP.getNumOperands();
+ if (CP.hasProperty(SDNPHasChain))
+ ++NextRecordedOperandNo; // Chained node operand.
+
// If the complex pattern has a chain, then we need to keep track of the
// fact that we just recorded a chain input. The chain input will be
// matched as the last operand of the predicate if it was successful.
@@ -442,26 +449,9 @@
if (!N->getName().empty()) {
unsigned &VarMapEntry = VariableMap[N->getName()];
if (VarMapEntry == 0) {
- VarMapEntry = NextRecordedOperandNo+1;
-
- unsigned NumRecorded;
-
- // If this is a complex pattern, the match operation for it will
- // implicitly record all of the outputs of it (which may be more than
- // one).
- if (const ComplexPattern *CP = N->getComplexPatternInfo(CGP)) {
- // Record the right number of operands.
- NumRecorded = CP->getNumOperands();
-
- if (CP->hasProperty(SDNPHasChain))
- ++NumRecorded; // Chained node operand.
- } else {
- // If it is a normal named node, we must emit a 'Record' opcode.
- AddMatcherNode(new RecordMatcherNode("$" + N->getName()));
- NumRecorded = 1;
- }
- NextRecordedOperandNo += NumRecorded;
-
+ // If it is a named node, we must emit a 'Record' opcode.
+ VarMapEntry = ++NextRecordedOperandNo;
+ AddMatcherNode(new RecordMatcherNode("$" + N->getName()));
} else {
// If we get here, this is a second reference to a specific name. Since
// we already have checked that the first reference is valid, we don't
@@ -503,8 +493,10 @@
// A reference to a complex pattern gets all of the results of the complex
// pattern's match.
if (const ComplexPattern *CP = N->getComplexPatternInfo(CGP)) {
+ // The first slot entry is the node itself, the subsequent entries are the
+ // matched values.
for (unsigned i = 0, e = CP->getNumOperands(); i != e; ++i)
- ResultOps.push_back(SlotNo+i);
+ ResultOps.push_back(SlotNo+i+1);
return;
}
From evan.cheng at apple.com Mon Feb 22 17:34:01 2010
From: evan.cheng at apple.com (Evan Cheng)
Date: Mon, 22 Feb 2010 23:34:01 -0000
Subject: [llvm-commits] [llvm] r96825 - in /llvm/trunk:
lib/Transforms/InstCombine/InstCombineCalls.cpp
test/CodeGen/X86/critical-edge-split.ll
test/CodeGen/X86/ins_subreg_coalesce-3.ll test/CodeGen/X86/trunc-to-bool.ll
test/CodeGen/X86/xor-icmp.ll test/Transforms/InstCombine/objsize.ll
Message-ID: <20100222233401.23BEE2A6C12E@llvm.org>
Author: evancheng
Date: Mon Feb 22 17:34:00 2010
New Revision: 96825
URL: http://llvm.org/viewvc/llvm-project?rev=96825&view=rev
Log:
Instcombine constant folding can normalize gep with negative index to index with large offset. When instcombine objsize checking transformation sees these geps where the offset seemingly point out of bound, it should just return "i don't know" rather than asserting.
Modified:
llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
llvm/trunk/test/CodeGen/X86/critical-edge-split.ll
llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll
llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll
llvm/trunk/test/CodeGen/X86/xor-icmp.ll
llvm/trunk/test/Transforms/InstCombine/objsize.ll
Modified: llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp?rev=96825&r1=96824&r2=96825&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp (original)
+++ llvm/trunk/lib/Transforms/InstCombine/InstCombineCalls.cpp Mon Feb 22 17:34:00 2010
@@ -319,7 +319,7 @@
if (GlobalVariable *GV = dyn_cast(Op1)) {
if (GV->hasDefinitiveInitializer()) {
Constant *C = GV->getInitializer();
- size_t globalSize = TD->getTypeAllocSize(C->getType());
+ uint64_t globalSize = TD->getTypeAllocSize(C->getType());
return ReplaceInstUsesWith(CI, ConstantInt::get(ReturnTy, globalSize));
} else {
Constant *RetVal = ConstantInt::get(ReturnTy, Min ? 0 : -1ULL);
@@ -341,16 +341,21 @@
// Get what we're pointing to and its size.
const PointerType *BaseType =
cast(Operand->getType());
- size_t Size = TD->getTypeAllocSize(BaseType->getElementType());
+ uint64_t Size = TD->getTypeAllocSize(BaseType->getElementType());
// Get the current byte offset into the thing. Use the original
// operand in case we're looking through a bitcast.
SmallVector Ops(CE->op_begin()+1, CE->op_end());
const PointerType *OffsetType =
cast(GEP->getPointerOperand()->getType());
- size_t Offset = TD->getIndexedOffset(OffsetType, &Ops[0], Ops.size());
+ uint64_t Offset = TD->getIndexedOffset(OffsetType, &Ops[0], Ops.size());
- assert(Size >= Offset);
+ if (Size < Offset) {
+ // Out of bound reference? Negative index normalized to large
+ // index? Just return "I don't know".
+ Constant *RetVal = ConstantInt::get(ReturnTy, Min ? 0 : -1ULL);
+ return ReplaceInstUsesWith(CI, RetVal);
+ }
Constant *RetVal = ConstantInt::get(ReturnTy, Size-Offset);
return ReplaceInstUsesWith(CI, RetVal);
Modified: llvm/trunk/test/CodeGen/X86/critical-edge-split.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/critical-edge-split.ll?rev=96825&r1=96824&r2=96825&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/critical-edge-split.ll (original)
+++ llvm/trunk/test/CodeGen/X86/critical-edge-split.ll Mon Feb 22 17:34:00 2010
@@ -1,4 +1,4 @@
-; RUN: llc < %s -mtriple=i386-apple-darwin -tailcallopt=false -stats -info-output-file - | grep asm-printer | grep 31
+; RUN: llc < %s -mtriple=i386-apple-darwin -stats -info-output-file - | grep asm-printer | grep 29
%CC = type { %Register }
%II = type { %"struct.XX::II::$_74" }
Modified: llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll?rev=96825&r1=96824&r2=96825&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll (original)
+++ llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll Mon Feb 22 17:34:00 2010
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86-64 | grep mov | count 5
+; RUN: llc < %s -march=x86-64 | grep mov | count 3
%struct.COMPOSITE = type { i8, i16, i16 }
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
Modified: llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll?rev=96825&r1=96824&r2=96825&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll (original)
+++ llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll Mon Feb 22 17:34:00 2010
@@ -3,13 +3,14 @@
; value and as the operand of a branch.
; RUN: llc < %s -march=x86 | FileCheck %s
-define i1 @test1(i32 %X) zeroext {
+define i1 @test1(i32 %X) zeroext nounwind {
%Y = trunc i32 %X to i1
ret i1 %Y
}
+; CHECK: test1:
; CHECK: andl $1, %eax
-define i1 @test2(i32 %val, i32 %mask) {
+define i1 @test2(i32 %val, i32 %mask) nounwind {
entry:
%shifted = ashr i32 %val, %mask
%anded = and i32 %shifted, 1
@@ -20,9 +21,10 @@
ret_false:
ret i1 false
}
-; CHECK: testb $1, %al
+; CHECK: test2:
+; CHECK: btl %eax
-define i32 @test3(i8* %ptr) {
+define i32 @test3(i8* %ptr) nounwind {
%val = load i8* %ptr
%tmp = trunc i8 %val to i1
br i1 %tmp, label %cond_true, label %cond_false
@@ -31,9 +33,10 @@
cond_false:
ret i32 42
}
-; CHECK: testb $1, %al
+; CHECK: test3:
+; CHECK: testb $1, (%eax)
-define i32 @test4(i8* %ptr) {
+define i32 @test4(i8* %ptr) nounwind {
%tmp = ptrtoint i8* %ptr to i1
br i1 %tmp, label %cond_true, label %cond_false
cond_true:
@@ -41,9 +44,10 @@
cond_false:
ret i32 42
}
-; CHECK: testb $1, %al
+; CHECK: test4:
+; CHECK: testb $1, 4(%esp)
-define i32 @test6(double %d) {
+define i32 @test5(double %d) nounwind {
%tmp = fptosi double %d to i1
br i1 %tmp, label %cond_true, label %cond_false
cond_true:
@@ -51,4 +55,5 @@
cond_false:
ret i32 42
}
+; CHECK: test5:
; CHECK: testb $1
Modified: llvm/trunk/test/CodeGen/X86/xor-icmp.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/xor-icmp.ll?rev=96825&r1=96824&r2=96825&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/xor-icmp.ll (original)
+++ llvm/trunk/test/CodeGen/X86/xor-icmp.ll Mon Feb 22 17:34:00 2010
@@ -1,5 +1,6 @@
; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=X32
; RUN: llc < %s -march=x86-64 | FileCheck %s -check-prefix=X64
+; rdar://7367229
define i32 @t(i32 %a, i32 %b) nounwind ssp {
entry:
@@ -34,3 +35,33 @@
declare i32 @foo(...)
declare i32 @bar(...)
+
+define i32 @t2(i32 %x, i32 %y) nounwind ssp {
+; X32: t2:
+; X32: cmpl
+; X32: sete
+; X32: cmpl
+; X32: sete
+; X32-NOT: xor
+; X32: je
+
+; X64: t2:
+; X64: testl
+; X64: sete
+; X64: testl
+; X64: sete
+; X64-NOT: xor
+; X64: je
+entry:
+ %0 = icmp eq i32 %x, 0 ; [#uses=1]
+ %1 = icmp eq i32 %y, 0 ; [#uses=1]
+ %2 = xor i1 %1, %0 ; [#uses=1]
+ br i1 %2, label %bb, label %return
+
+bb: ; preds = %entry
+ %3 = tail call i32 (...)* @foo() nounwind ; [#uses=0]
+ ret i32 undef
+
+return: ; preds = %entry
+ ret i32 undef
+}
Modified: llvm/trunk/test/Transforms/InstCombine/objsize.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/objsize.ll?rev=96825&r1=96824&r2=96825&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/objsize.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/objsize.ll Mon Feb 22 17:34:00 2010
@@ -72,4 +72,34 @@
ret i32 %1
}
-declare i32 @llvm.objectsize.i32(i8*, i1) nounwind readonly
\ No newline at end of file
+; rdar://7674946
+ at array = internal global [480 x float] zeroinitializer ; <[480 x float]*> [#uses=1]
+
+declare i8* @__memcpy_chk(i8*, i8*, i32, i32) nounwind
+
+declare i32 @llvm.objectsize.i32(i8*, i1) nounwind readonly
+
+declare i8* @__inline_memcpy_chk(i8*, i8*, i32) nounwind inlinehint
+
+define void @test3() nounwind {
+; CHECK: @test3
+entry:
+ br i1 undef, label %bb11, label %bb12
+
+bb11:
+ %0 = getelementptr inbounds float* getelementptr inbounds ([480 x float]* @array, i32 0, i32 128), i32 -127 ; [#uses=1]
+ %1 = bitcast float* %0 to i8* ; [#uses=1]
+ %2 = call i32 @llvm.objectsize.i32(i8* %1, i1 false) ; [#uses=1]
+ %3 = call i8* @__memcpy_chk(i8* undef, i8* undef, i32 512, i32 %2) nounwind ; [#uses=0]
+; CHECK: @__memcpy_chk
+ unreachable
+
+bb12:
+ %4 = getelementptr inbounds float* getelementptr inbounds ([480 x float]* @array, i32 0, i32 128), i32 -127 ; [#uses=1]
+ %5 = bitcast float* %4 to i8* ; [#uses=1]
+ %6 = call i8* @__inline_memcpy_chk(i8* %5, i8* undef, i32 512) nounwind inlinehint ; [#uses=0]
+; CHECK: @__inline_memcpy_chk
+ unreachable
+}
+
+declare i32 @llvm.objectsize.i32(i8*, i1) nounwind readonly
From sabre at nondot.org Mon Feb 22 17:34:12 2010
From: sabre at nondot.org (Chris Lattner)
Date: Mon, 22 Feb 2010 23:34:12 -0000
Subject: [llvm-commits] [llvm] r96826 - in /llvm/trunk/test/CodeGen/MSP430:
AddrMode-bis-rx.ll AddrMode-bis-xr.ll AddrMode-mov-rx.ll AddrMode-mov-xr.ll
bit.ll
Message-ID: <20100222233412.CEEFE2A6C12E@llvm.org>
Author: lattner
Date: Mon Feb 22 17:34:12 2010
New Revision: 96826
URL: http://llvm.org/viewvc/llvm-project?rev=96826&view=rev
Log:
no need to run llvm-as here.
Modified:
llvm/trunk/test/CodeGen/MSP430/AddrMode-bis-rx.ll
llvm/trunk/test/CodeGen/MSP430/AddrMode-bis-xr.ll
llvm/trunk/test/CodeGen/MSP430/AddrMode-mov-rx.ll
llvm/trunk/test/CodeGen/MSP430/AddrMode-mov-xr.ll
llvm/trunk/test/CodeGen/MSP430/bit.ll
Modified: llvm/trunk/test/CodeGen/MSP430/AddrMode-bis-rx.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/MSP430/AddrMode-bis-rx.ll?rev=96826&r1=96825&r2=96826&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/MSP430/AddrMode-bis-rx.ll (original)
+++ llvm/trunk/test/CodeGen/MSP430/AddrMode-bis-rx.ll Mon Feb 22 17:34:12 2010
@@ -1,4 +1,4 @@
-; RUN: llvm-as < %s | llc -march=msp430 | FileCheck %s
+; RUN: llc < %s -march=msp430 | FileCheck %s
target datalayout = "e-p:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:16:16"
target triple = "msp430-generic-generic"
Modified: llvm/trunk/test/CodeGen/MSP430/AddrMode-bis-xr.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/MSP430/AddrMode-bis-xr.ll?rev=96826&r1=96825&r2=96826&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/MSP430/AddrMode-bis-xr.ll (original)
+++ llvm/trunk/test/CodeGen/MSP430/AddrMode-bis-xr.ll Mon Feb 22 17:34:12 2010
@@ -1,4 +1,4 @@
-; RUN: llvm-as < %s | llc -march=msp430 | FileCheck %s
+; RUN: llc < %s -march=msp430 | FileCheck %s
target datalayout = "e-p:16:16:16-i8:8:8-i16:16:16-i32:16:16"
target triple = "msp430-generic-generic"
Modified: llvm/trunk/test/CodeGen/MSP430/AddrMode-mov-rx.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/MSP430/AddrMode-mov-rx.ll?rev=96826&r1=96825&r2=96826&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/MSP430/AddrMode-mov-rx.ll (original)
+++ llvm/trunk/test/CodeGen/MSP430/AddrMode-mov-rx.ll Mon Feb 22 17:34:12 2010
@@ -1,4 +1,4 @@
-; RUN: llvm-as < %s | llc -march=msp430 | FileCheck %s
+; RUN: llc < %s -march=msp430 | FileCheck %s
target datalayout = "e-p:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:16:16"
target triple = "msp430-generic-generic"
Modified: llvm/trunk/test/CodeGen/MSP430/AddrMode-mov-xr.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/MSP430/AddrMode-mov-xr.ll?rev=96826&r1=96825&r2=96826&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/MSP430/AddrMode-mov-xr.ll (original)
+++ llvm/trunk/test/CodeGen/MSP430/AddrMode-mov-xr.ll Mon Feb 22 17:34:12 2010
@@ -1,4 +1,4 @@
-; RUN: llvm-as < %s | llc -march=msp430 | FileCheck %s
+; RUN: llc < %s -march=msp430 | FileCheck %s
target datalayout = "e-p:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:16:16"
target triple = "msp430-generic-generic"
Modified: llvm/trunk/test/CodeGen/MSP430/bit.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/MSP430/bit.ll?rev=96826&r1=96825&r2=96826&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/MSP430/bit.ll (original)
+++ llvm/trunk/test/CodeGen/MSP430/bit.ll Mon Feb 22 17:34:12 2010
@@ -1,4 +1,4 @@
-; RUN: llvm-as < %s | llc -march=msp430 | FileCheck %s
+; RUN: llc < %s -march=msp430 | FileCheck %s
target datalayout = "e-p:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:16:32"
target triple = "msp430-generic-generic"
From evan.cheng at apple.com Mon Feb 22 17:37:48 2010
From: evan.cheng at apple.com (Evan Cheng)
Date: Mon, 22 Feb 2010 23:37:48 -0000
Subject: [llvm-commits] [llvm] r96827 - in /llvm/trunk/test/CodeGen/X86:
critical-edge-split.ll ins_subreg_coalesce-3.ll trunc-to-bool.ll
xor-icmp.ll
Message-ID: <20100222233748.389C12A6C12E@llvm.org>
Author: evancheng
Date: Mon Feb 22 17:37:48 2010
New Revision: 96827
URL: http://llvm.org/viewvc/llvm-project?rev=96827&view=rev
Log:
These should not have been committed.
Modified:
llvm/trunk/test/CodeGen/X86/critical-edge-split.ll
llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll
llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll
llvm/trunk/test/CodeGen/X86/xor-icmp.ll
Modified: llvm/trunk/test/CodeGen/X86/critical-edge-split.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/critical-edge-split.ll?rev=96827&r1=96826&r2=96827&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/critical-edge-split.ll (original)
+++ llvm/trunk/test/CodeGen/X86/critical-edge-split.ll Mon Feb 22 17:37:48 2010
@@ -1,4 +1,4 @@
-; RUN: llc < %s -mtriple=i386-apple-darwin -stats -info-output-file - | grep asm-printer | grep 29
+; RUN: llc < %s -mtriple=i386-apple-darwin -tailcallopt=false -stats -info-output-file - | grep asm-printer | grep 31
%CC = type { %Register }
%II = type { %"struct.XX::II::$_74" }
Modified: llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll?rev=96827&r1=96826&r2=96827&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll (original)
+++ llvm/trunk/test/CodeGen/X86/ins_subreg_coalesce-3.ll Mon Feb 22 17:37:48 2010
@@ -1,4 +1,4 @@
-; RUN: llc < %s -march=x86-64 | grep mov | count 3
+; RUN: llc < %s -march=x86-64 | grep mov | count 5
%struct.COMPOSITE = type { i8, i16, i16 }
%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
Modified: llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll?rev=96827&r1=96826&r2=96827&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll (original)
+++ llvm/trunk/test/CodeGen/X86/trunc-to-bool.ll Mon Feb 22 17:37:48 2010
@@ -3,14 +3,13 @@
; value and as the operand of a branch.
; RUN: llc < %s -march=x86 | FileCheck %s
-define i1 @test1(i32 %X) zeroext nounwind {
+define i1 @test1(i32 %X) zeroext {
%Y = trunc i32 %X to i1
ret i1 %Y
}
-; CHECK: test1:
; CHECK: andl $1, %eax
-define i1 @test2(i32 %val, i32 %mask) nounwind {
+define i1 @test2(i32 %val, i32 %mask) {
entry:
%shifted = ashr i32 %val, %mask
%anded = and i32 %shifted, 1
@@ -21,10 +20,9 @@
ret_false:
ret i1 false
}
-; CHECK: test2:
-; CHECK: btl %eax
+; CHECK: testb $1, %al
-define i32 @test3(i8* %ptr) nounwind {
+define i32 @test3(i8* %ptr) {
%val = load i8* %ptr
%tmp = trunc i8 %val to i1
br i1 %tmp, label %cond_true, label %cond_false
@@ -33,10 +31,9 @@
cond_false:
ret i32 42
}
-; CHECK: test3:
-; CHECK: testb $1, (%eax)
+; CHECK: testb $1, %al
-define i32 @test4(i8* %ptr) nounwind {
+define i32 @test4(i8* %ptr) {
%tmp = ptrtoint i8* %ptr to i1
br i1 %tmp, label %cond_true, label %cond_false
cond_true:
@@ -44,10 +41,9 @@
cond_false:
ret i32 42
}
-; CHECK: test4:
-; CHECK: testb $1, 4(%esp)
+; CHECK: testb $1, %al
-define i32 @test5(double %d) nounwind {
+define i32 @test6(double %d) {
%tmp = fptosi double %d to i1
br i1 %tmp, label %cond_true, label %cond_false
cond_true:
@@ -55,5 +51,4 @@
cond_false:
ret i32 42
}
-; CHECK: test5:
; CHECK: testb $1
Modified: llvm/trunk/test/CodeGen/X86/xor-icmp.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/xor-icmp.ll?rev=96827&r1=96826&r2=96827&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/xor-icmp.ll (original)
+++ llvm/trunk/test/CodeGen/X86/xor-icmp.ll Mon Feb 22 17:37:48 2010
@@ -1,6 +1,5 @@
; RUN: llc < %s -march=x86 | FileCheck %s -check-prefix=X32
; RUN: llc < %s -march=x86-64 | FileCheck %s -check-prefix=X64
-; rdar://7367229
define i32 @t(i32 %a, i32 %b) nounwind ssp {
entry:
@@ -35,33 +34,3 @@
declare i32 @foo(...)
declare i32 @bar(...)
-
-define i32 @t2(i32 %x, i32 %y) nounwind ssp {
-; X32: t2:
-; X32: cmpl
-; X32: sete
-; X32: cmpl
-; X32: sete
-; X32-NOT: xor
-; X32: je
-
-; X64: t2:
-; X64: testl
-; X64: sete
-; X64: testl
-; X64: sete
-; X64-NOT: xor
-; X64: je
-entry:
- %0 = icmp eq i32 %x, 0 ; [#uses=1]
- %1 = icmp eq i32 %y, 0 ; [#uses=1]
- %2 = xor i1 %1, %0 ; [#uses=1]
- br i1 %2, label %bb, label %return
-
-bb: ; preds = %entry
- %3 = tail call i32 (...)* @foo() nounwind ; [#uses=0]
- ret i32 undef
-
-return: ; preds = %entry
- ret i32 undef
-}
From jyasskin at gmail.com Mon Feb 22 17:48:07 2010
From: jyasskin at gmail.com (jyasskin at gmail.com)
Date: Mon, 22 Feb 2010 23:48:07 +0000
Subject: [llvm-commits] [PATCH] Shared library for LLVM (issue198059)
Message-ID: <00151750ee2aa8859d0480391058@google.com>
I think this should fix both arm and darwin8. Xerxes, could you check
ARM? I used -lgcc and avoided linking the problematic unittest against
the library without --enable-shared.
http://codereview.appspot.com/198059/diff/9002/10008
File Makefile.rules (right):
http://codereview.appspot.com/198059/diff/9002/10008#newcode616
Makefile.rules:616: LD.Flags += $(RPATH) -Wl,'$$ORIGIN/../lib'
On 2010/02/18 21:52:02, nlewycky1 wrote:
> We should give packagers a flag to tune the rpath path to work around
any
> problems -- or more importantly, turn it off entirely. The libraries
should be
> findable through normal ldconfig lookup once installed.
This isn't a regression (the below lines always included an absolute
rpath), so I'll do it in a separate patch, if the packagers need it at
all. Note that they can already patch the Makefile to remove the RPATH;
a flag would just make it a bit easier.
http://codereview.appspot.com/198059/diff/9002/10008#newcode962
Makefile.rules:962: LLVMLibsPaths +=
$(LibDir)/libLLVM-$(LLVMVersion)$(SHLIBEXT)
On 2010/02/18 21:52:02, nlewycky1 wrote:
> I don't follow; examples are linked shared even when shared library is
off?
Yes, per Chris's suggestion. The idea is to test the shared library
unconditionally, but not make the tools do it until it's tested better.
However, not all the examples can link against the .so on arm, so I've
enabled particular ones individually.
http://codereview.appspot.com/198059/diff/9002/10004
File configure (right):
http://codereview.appspot.com/198059/diff/9002/10004#newcode1406
configure:1406: --enable-shared Link LLVM tools shared (default
is NO)
On 2010/02/18 21:52:02, nlewycky1 wrote:
> This sounds independent of whether it builds shared at all. If so, is
there a
> control for that?
There's no control for that. Do we need one? What's it hurt to build the
shared library if we don't use it?
http://codereview.appspot.com/198059/diff/9002/10006
File tools/llvm-shlib/Makefile (right):
http://codereview.appspot.com/198059/diff/9002/10006#newcode59
tools/llvm-shlib/Makefile:59: ifneq ($(ARCH), ARM)
On 2010/02/18 23:23:20, xranby wrote:
> I tested this workaround on ARM linux using gcc 4.3.3 on ubuntu jaunty
> The shared library libLLVM2.7svn.so links +1
> But the examples unfortunately fails to link against the shared
library:
> llvm[1]: Linking Release executable BrainF (without symbols)
> /usr/bin/ld: /media/disk/llvm-configure/Release/examples/BrainF:
hidden symbol
> `__sync_val_compare_and_swap_4' in
> /usr/lib/gcc/arm-linux-gnueabi/4.3.3/libgcc.a(linux-atomic.o) is
referenced by
> DSO
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20100215/096473.html
Darn. I see you tested -lgcc, and it worked better, but not perfectly.
I'll try linking only a specific example against the shared library, so
that I can get this in. Then we can try to get arm shared exception
handling working later.
http://codereview.appspot.com/198059/diff/9002/10006#newcode64
tools/llvm-shlib/Makefile:64: # at
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40133.
On 2010/02/18 21:52:02, nlewycky1 wrote:
> FYI, gcc prefers 'http://gcc.gnu.org/PR40133' style links. They have
switched
> bug database software once before.
Done.
http://codereview.appspot.com/198059/diff/9002/10007
File unittests/Makefile.unittest (right):
http://codereview.appspot.com/198059/diff/9002/10007#newcode32
unittests/Makefile.unittest:32: Run.Shared :=
$(SHLIBPATH_VAR)="$(LibDir)$${$(SHLIBPATH_VAR):+:}$$$(SHLIBPATH_VAR)"
On 2010/02/18 21:52:02, nlewycky1 wrote:
> Oh, it's either this or try modifying the rpath, huh? And if you make
the rpath
> configurable you're stuck not knowing whether it's relative or
absolute. Well,
> please add a comment here explaining why you don't just fix up the
rpath.
I can make the rpath absolute for unittests, but OSX seems to still need
the DYLD_LIBRARY_PATH. It'll help linux anyway.
http://codereview.appspot.com/198059/diff/9002/10007#newcode45
unittests/Makefile.unittest:45: $(Run.Shared) $(LLVMUnitTestExe)
On 2010/02/18 21:52:02, nlewycky1 wrote:
> The nasty part is that this makes it harder for me to run the unit
tests, or to
> just run the binary under gdb, etc. Without fixing up rpath, there's
nothing you
> can do about that.
> Then again, you don't really want to install unit tests, and you are
very
> unlikely to want to run them against the installed libraries... maybe
we could
> clobber the rpath instead?
Yep, see above.
http://codereview.appspot.com/198059/show
From sabre at nondot.org Mon Feb 22 17:55:39 2010
From: sabre at nondot.org (Chris Lattner)
Date: Mon, 22 Feb 2010 23:55:39 -0000
Subject: [llvm-commits] [llvm] r96833 - in /llvm/trunk:
include/llvm/CodeGen/DAGISelHeader.h
utils/TableGen/DAGISelMatcherEmitter.cpp
Message-ID: <20100222235539.AD93F2A6C12E@llvm.org>
Author: lattner
Date: Mon Feb 22 17:55:39 2010
New Revision: 96833
URL: http://llvm.org/viewvc/llvm-project?rev=96833&view=rev
Log:
add a new Push2 opcode for targets (like cellspu) which have
ridiculously ginormous patterns and need more than one byte
of displacement for encodings. This fixes CellSPU/fdiv.ll.
SPU is still doing something else ridiculous though.
Modified:
llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp
Modified: llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h?rev=96833&r1=96832&r2=96833&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h (original)
+++ llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h Mon Feb 22 17:55:39 2010
@@ -201,7 +201,7 @@
}
enum BuiltinOpcodes {
- OPC_Push,
+ OPC_Push, OPC_Push2,
OPC_RecordNode,
OPC_RecordMemRef,
OPC_CaptureFlagInput,
@@ -359,6 +359,19 @@
MatchScopes.push_back(NewEntry);
continue;
}
+ case OPC_Push2: {
+ unsigned NumToSkip = GetInt2(MatcherTable, MatcherIndex);
+ MatchScope NewEntry;
+ NewEntry.FailIndex = MatcherIndex+NumToSkip;
+ NewEntry.NodeStackSize = NodeStack.size();
+ NewEntry.NumRecordedNodes = RecordedNodes.size();
+ NewEntry.NumMatchedMemRefs = MatchedMemRefs.size();
+ NewEntry.InputChain = InputChain;
+ NewEntry.InputFlag = InputFlag;
+ NewEntry.HasChainNodesMatched = !ChainNodesMatched.empty();
+ MatchScopes.push_back(NewEntry);
+ continue;
+ }
case OPC_RecordNode:
// Remember this node, it may end up being an operand in the pattern.
RecordedNodes.push_back(N);
Modified: llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp?rev=96833&r1=96832&r2=96833&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp (original)
+++ llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp Mon Feb 22 17:55:39 2010
@@ -350,16 +350,29 @@
NextSize = EmitMatcherList(cast(N)->getNext(),
Indent+1, CurrentIdx+2, FOS);
}
-
+
+ // In the unlikely event that we have something too big to emit with a
+ // one byte offset, regenerate it with a two-byte one.
if (NextSize > 255) {
- errs() <<
- "Tblgen internal error: can't handle predicate this complex yet\n";
- // FIXME: exit(1);
+ TmpBuf.clear();
+ raw_svector_ostream OS(TmpBuf);
+ formatted_raw_ostream FOS(OS);
+ NextSize = EmitMatcherList(cast(N)->getNext(),
+ Indent+1, CurrentIdx+3, FOS);
+ if (NextSize > 65535) {
+ errs() <<
+ "Tblgen internal error: can't handle pattern this complex yet\n";
+ exit(1);
+ }
}
OS << "/*" << CurrentIdx << "*/";
OS.PadToColumn(Indent*2);
- OS << "OPC_Push, " << NextSize << ",\n";
+
+ if (NextSize < 256)
+ OS << "OPC_Push, " << NextSize << ",\n";
+ else
+ OS << "OPC_Push2, " << (NextSize&255) << ", " << (NextSize>>8) << ",\n";
OS << TmpBuf.str();
Size += 2+NextSize;
From jyasskin at google.com Mon Feb 22 18:04:53 2010
From: jyasskin at google.com (Jeffrey Yasskin)
Date: Tue, 23 Feb 2010 00:04:53 -0000
Subject: [llvm-commits] [llvm] r96834 -
/llvm/trunk/lib/Support/GraphWriter.cpp
Message-ID: <20100223000453.7E04C2A6C12E@llvm.org>
Author: jyasskin
Date: Mon Feb 22 18:04:53 2010
New Revision: 96834
URL: http://llvm.org/viewvc/llvm-project?rev=96834&view=rev
Log:
Fix viewCFG on Linux.
Modified:
llvm/trunk/lib/Support/GraphWriter.cpp
Modified: llvm/trunk/lib/Support/GraphWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/GraphWriter.cpp?rev=96834&r1=96833&r2=96834&view=diff
==============================================================================
--- llvm/trunk/lib/Support/GraphWriter.cpp (original)
+++ llvm/trunk/lib/Support/GraphWriter.cpp Mon Feb 22 18:04:53 2010
@@ -137,7 +137,7 @@
args.clear();
args.push_back(gv.c_str());
args.push_back(PSFilename.c_str());
- args.push_back("-spartan");
+ args.push_back("--spartan");
args.push_back(0);
ErrMsg.clear();
From stoklund at 2pi.dk Mon Feb 22 18:28:53 2010
From: stoklund at 2pi.dk (Jakob Stoklund Olesen)
Date: Tue, 23 Feb 2010 00:28:53 -0000
Subject: [llvm-commits] [llvm] r96837 - in /llvm/trunk/lib/CodeGen:
PHIElimination.cpp PHIElimination.h
Message-ID: <20100223002854.0937B2A6C12C@llvm.org>
Author: stoklund
Date: Mon Feb 22 18:28:53 2010
New Revision: 96837
URL: http://llvm.org/viewvc/llvm-project?rev=96837&view=rev
Log:
Dead code elimination
Modified:
llvm/trunk/lib/CodeGen/PHIElimination.cpp
llvm/trunk/lib/CodeGen/PHIElimination.h
Modified: llvm/trunk/lib/CodeGen/PHIElimination.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PHIElimination.cpp?rev=96837&r1=96836&r2=96837&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/PHIElimination.cpp (original)
+++ llvm/trunk/lib/CodeGen/PHIElimination.cpp Mon Feb 22 18:28:53 2010
@@ -55,7 +55,6 @@
bool llvm::PHIElimination::runOnMachineFunction(MachineFunction &Fn) {
MRI = &Fn.getRegInfo();
- PHIDefs.clear();
bool Changed = false;
// Split critical edges to help the coalescer
@@ -214,10 +213,6 @@
TII->copyRegToReg(MBB, AfterPHIsIt, DestReg, IncomingReg, RC, RC);
}
- // Record PHI def.
- assert(!hasPHIDef(DestReg) && "Vreg has multiple phi-defs?");
- PHIDefs[DestReg] = &MBB;
-
// Update live variable information if there is any.
LiveVariables *LV = getAnalysisIfAvailable();
if (LV) {
Modified: llvm/trunk/lib/CodeGen/PHIElimination.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PHIElimination.h?rev=96837&r1=96836&r2=96837&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/PHIElimination.h (original)
+++ llvm/trunk/lib/CodeGen/PHIElimination.h Mon Feb 22 18:28:53 2010
@@ -22,10 +22,8 @@
/// Lower PHI instructions to copies.
class PHIElimination : public MachineFunctionPass {
MachineRegisterInfo *MRI; // Machine register information
- typedef DenseMap PHIDefMap;
public:
-
static char ID; // Pass identification, replacement for typeid
PHIElimination() : MachineFunctionPass(&ID) {}
@@ -33,12 +31,6 @@
virtual void getAnalysisUsage(AnalysisUsage &AU) const;
- /// Return true if the given vreg was defined by a PHI intsr prior to
- /// lowering.
- bool hasPHIDef(unsigned vreg) const {
- return PHIDefs.count(vreg);
- }
-
private:
/// EliminatePHINodes - Eliminate phi nodes by inserting copy instructions
/// in predecessor basic blocks.
@@ -106,7 +98,6 @@
typedef DenseMap VRegPHIUse;
VRegPHIUse VRegPHIUseCount;
- PHIDefMap PHIDefs;
// Defs of PHI sources which are implicit_def.
SmallPtrSet ImpDefs;
From johnny.chen at apple.com Mon Feb 22 18:33:12 2010
From: johnny.chen at apple.com (Johnny Chen)
Date: Tue, 23 Feb 2010 00:33:12 -0000
Subject: [llvm-commits] [llvm] r96838 -
/llvm/trunk/lib/Target/ARM/ARMInstrNEON.td
Message-ID: <20100223003312.CD4752A6C12C@llvm.org>
Author: johnny
Date: Mon Feb 22 18:33:12 2010
New Revision: 96838
URL: http://llvm.org/viewvc/llvm-project?rev=96838&view=rev
Log:
Added VCEQ (immediate #0) NEON instruction for disassembly only.
A8.6.281
Modified:
llvm/trunk/lib/Target/ARM/ARMInstrNEON.td
Modified: llvm/trunk/lib/Target/ARM/ARMInstrNEON.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrNEON.td?rev=96838&r1=96837&r2=96838&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrNEON.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrNEON.td Mon Feb 22 18:33:12 2010
@@ -1113,6 +1113,44 @@
// S = single int (32 bit) elements
// D = double int (64 bit) elements
+// Neon 2-register vector operations -- for disassembly only.
+
+// First with only element sizes of 8, 16 and 32 bits:
+multiclass N2V_QHS_np op24_23, bits<2> op21_20, bits<2> op17_16,
+ bits<5> op11_7, bit op4, string opc, string asm> {
+ // 64-bit vector types.
+ def v8i8 : N2V;
+ def v4i16 : N2V;
+ def v2i32 : N2V;
+ def v2f32 : N2V {
+ let Inst{10} = 1; // overwrite F = 1
+ }
+
+ // 128-bit vector types.
+ def v16i8 : N2V;
+ def v8i16 : N2V;
+ def v4i32 : N2V;
+ def v4f32 : N2V {
+ let Inst{10} = 1; // overwrite F = 1
+ }
+}
+
// Neon 3-register vector operations.
// First with only element sizes of 8, 16 and 32 bits:
@@ -1951,6 +1989,9 @@
NEONvceq, 1>;
def VCEQfq : N3VQ<0,0,0b00,0b1110,0, IIC_VBINQ, "vceq", "f32", v4i32, v4f32,
NEONvceq, 1>;
+// For disassembly only.
+defm VCEQz : N2V_QHS_np<0b11,0b11,0b01,0b00010,0, "vceq", "$dst, $src, #0">;
+
// VCGE : Vector Compare Greater Than or Equal
defm VCGEs : N3V_QHS<0, 0, 0b0011, 1, IIC_VBINi4D, IIC_VBINi4D, IIC_VBINi4Q,
IIC_VBINi4Q, "vcge", "s", NEONvcge, 0>;
From sabre at nondot.org Mon Feb 22 18:59:59 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 00:59:59 -0000
Subject: [llvm-commits] [llvm] r96843 - in /llvm/trunk:
include/llvm/CodeGen/DAGISelHeader.h
utils/TableGen/DAGISelMatcherEmitter.cpp
Message-ID: <20100223005959.DA9032A6C12C@llvm.org>
Author: lattner
Date: Mon Feb 22 18:59:59 2010
New Revision: 96843
URL: http://llvm.org/viewvc/llvm-project?rev=96843&view=rev
Log:
switch the value# in OPC_CompleteMatch and OPC_EmitNode to use a
VBR encoding for the insanity being perpetrated by the spu backend.
Modified:
llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp
Modified: llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h?rev=96843&r1=96842&r2=96843&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h (original)
+++ llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h Mon Feb 22 18:59:59 2010
@@ -200,6 +200,24 @@
return Val;
}
+/// GetVBR - decode a vbr encoding whose top bit is set.
+ALWAYS_INLINE static unsigned
+GetVBR(unsigned Val, const unsigned char *MatcherTable, unsigned &Idx) {
+ assert(Val >= 128 && "Not a VBR");
+ Val &= 127; // Remove first vbr bit.
+
+ unsigned Shift = 7;
+ unsigned NextBits;
+ do {
+ NextBits = GetInt1(MatcherTable, Idx);
+ Val |= (NextBits&127) << Shift;
+ Shift += 7;
+ } while (NextBits & 128);
+
+ return Val;
+}
+
+
enum BuiltinOpcodes {
OPC_Push, OPC_Push2,
OPC_RecordNode,
@@ -691,6 +709,9 @@
SmallVector Ops;
for (unsigned i = 0; i != NumOps; ++i) {
unsigned RecNo = MatcherTable[MatcherIndex++];
+ if (RecNo & 128)
+ RecNo = GetVBR(RecNo, MatcherTable, MatcherIndex);
+
assert(RecNo < RecordedNodes.size() && "Invalid CheckSame");
Ops.push_back(RecordedNodes[RecNo]);
}
@@ -763,6 +784,9 @@
for (unsigned i = 0; i != NumResults; ++i) {
unsigned ResSlot = MatcherTable[MatcherIndex++];
+ if (ResSlot & 128)
+ ResSlot = GetVBR(ResSlot, MatcherTable, MatcherIndex);
+
assert(ResSlot < RecordedNodes.size() && "Invalid CheckSame");
SDValue Res = RecordedNodes[ResSlot];
Modified: llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp?rev=96843&r1=96842&r2=96843&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp (original)
+++ llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp Mon Feb 22 18:59:59 2010
@@ -127,6 +127,25 @@
};
} // end anonymous namespace.
+/// EmitVBRValue - Emit the specified value as a VBR, returning the number of
+/// bytes emitted.
+static unsigned EmitVBRValue(unsigned Val, raw_ostream &OS) {
+ if (Val <= 127) {
+ OS << Val << ", ";
+ return 1;
+ }
+
+ unsigned InVal = Val;
+ unsigned NumBytes = 0;
+ while (Val > 128) {
+ OS << (Val&127) << "|128,";
+ Val >>= 7;
+ ++NumBytes;
+ }
+ OS << Val << "/*" << InVal << "*/, ";
+ return NumBytes+1;
+}
+
/// EmitMatcherOpcodes - Emit bytes for the specified matcher and return
/// the number of bytes emitted.
unsigned MatcherTableEmitter::
@@ -309,22 +328,27 @@
OS << getEnumName(EN->getVT(i)) << ", ";
OS << EN->getNumOperands() << "/*#Ops*/, ";
- for (unsigned i = 0, e = EN->getNumOperands(); i != e; ++i)
- OS << EN->getOperand(i) << ", ";
+ unsigned NumOperandBytes = 0;
+ for (unsigned i = 0, e = EN->getNumOperands(); i != e; ++i) {
+ // We emit the operand numbers in VBR encoded format, in case the number
+ // is too large to represent with a byte.
+ NumOperandBytes += EmitVBRValue(EN->getOperand(i), OS);
+ }
OS << '\n';
- return 6+EN->getNumVTs()+EN->getNumOperands();
+ return 6+EN->getNumVTs()+NumOperandBytes;
}
case MatcherNode::CompleteMatch: {
const CompleteMatchMatcherNode *CM = cast(N);
OS << "OPC_CompleteMatch, " << CM->getNumResults() << ", ";
+ unsigned NumResultBytes = 0;
for (unsigned i = 0, e = CM->getNumResults(); i != e; ++i)
- OS << CM->getResult(i) << ", ";
+ NumResultBytes += EmitVBRValue(CM->getResult(i), OS);
OS << '\n';
OS.PadToColumn(Indent*2) << "// Src: "
<< *CM->getPattern().getSrcPattern() << '\n';
OS.PadToColumn(Indent*2) << "// Dst: "
<< *CM->getPattern().getDstPattern() << '\n';
- return 2+CM->getNumResults();
+ return 2 + NumResultBytes;
}
}
assert(0 && "Unreachable");
From sabre at nondot.org Mon Feb 22 19:07:09 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 01:07:09 -0000
Subject: [llvm-commits] [llvm] r96844 -
/llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
Message-ID: <20100223010709.DD76F2A6C12C@llvm.org>
Author: lattner
Date: Mon Feb 22 19:07:09 2010
New Revision: 96844
URL: http://llvm.org/viewvc/llvm-project?rev=96844&view=rev
Log:
fix an off-by-one error.
Modified:
llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
Modified: llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h?rev=96844&r1=96843&r2=96844&view=diff
==============================================================================
--- llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h (original)
+++ llvm/trunk/include/llvm/CodeGen/DAGISelHeader.h Mon Feb 22 19:07:09 2010
@@ -712,7 +712,7 @@
if (RecNo & 128)
RecNo = GetVBR(RecNo, MatcherTable, MatcherIndex);
- assert(RecNo < RecordedNodes.size() && "Invalid CheckSame");
+ assert(RecNo < RecordedNodes.size() && "Invalid EmitNode");
Ops.push_back(RecordedNodes[RecNo]);
}
From sabre at nondot.org Mon Feb 22 19:07:40 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 01:07:40 -0000
Subject: [llvm-commits] [llvm] r96845 -
/llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp
Message-ID: <20100223010740.1F4E82A6C12C@llvm.org>
Author: lattner
Date: Mon Feb 22 19:07:39 2010
New Revision: 96845
URL: http://llvm.org/viewvc/llvm-project?rev=96845&view=rev
Log:
really fix an off-by-one error
Modified:
llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp
Modified: llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp?rev=96845&r1=96844&r2=96845&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp (original)
+++ llvm/trunk/utils/TableGen/DAGISelMatcherEmitter.cpp Mon Feb 22 19:07:39 2010
@@ -137,7 +137,7 @@
unsigned InVal = Val;
unsigned NumBytes = 0;
- while (Val > 128) {
+ while (Val >= 128) {
OS << (Val&127) << "|128,";
Val >>= 7;
++NumBytes;
From sabre at nondot.org Mon Feb 22 19:20:00 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 01:20:00 -0000
Subject: [llvm-commits] [llvm] r96849 -
/llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
Message-ID: <20100223012000.D8CE82A6C12C@llvm.org>
Author: lattner
Date: Mon Feb 22 19:20:00 2010
New Revision: 96849
URL: http://llvm.org/viewvc/llvm-project?rev=96849&view=rev
Log:
the cell backend is making all sorts of unsafe and incorrect assumptions
about ownership and update policies. It isn't clear why it is doing all
this lowering at isel time instead of in legalize. This fixes fcmp64.ll
Modified:
llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
Modified: llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp?rev=96849&r1=96848&r2=96849&view=diff
==============================================================================
--- llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp Mon Feb 22 19:20:00 2010
@@ -294,15 +294,18 @@
((vecVT == MVT::v2i64) &&
((SPU::get_vec_i16imm(bvNode, *CurDAG, MVT::i64).getNode() != 0) ||
(SPU::get_ILHUvec_imm(bvNode, *CurDAG, MVT::i64).getNode() != 0) ||
- (SPU::get_vec_u18imm(bvNode, *CurDAG, MVT::i64).getNode() != 0))))
- return Select(bvNode);
+ (SPU::get_vec_u18imm(bvNode, *CurDAG, MVT::i64).getNode() != 0)))) {
+ HandleSDNode Dummy(SDValue(bvNode, 0));
+ Select(bvNode);
+ return Dummy.getValue().getNode();
+ }
// No, need to emit a constant pool spill:
std::vector CV;
for (size_t i = 0; i < bvNode->getNumOperands(); ++i) {
ConstantSDNode *V = dyn_cast (bvNode->getOperand(i));
- CV.push_back(const_cast (V->getConstantIntValue()));
+ CV.push_back(const_cast(V->getConstantIntValue()));
}
Constant *CP = ConstantVector::get(CV);
@@ -311,10 +314,14 @@
SDValue CGPoolOffset =
SPU::LowerConstantPool(CPIdx, *CurDAG,
SPUtli.getSPUTargetMachine());
- return SelectCode(CurDAG->getLoad(vecVT, dl,
- CurDAG->getEntryNode(), CGPoolOffset,
- PseudoSourceValue::getConstantPool(), 0,
- false, false, Alignment).getNode());
+
+ HandleSDNode Dummy(CurDAG->getLoad(vecVT, dl,
+ CurDAG->getEntryNode(), CGPoolOffset,
+ PseudoSourceValue::getConstantPool(),0,
+ false, false, Alignment));
+ CurDAG->ReplaceAllUsesWith(SDValue(bvNode, 0), Dummy.getValue());
+ SelectCode(Dummy.getValue().getNode());
+ return Dummy.getValue().getNode();
}
/// Select - Convert the specified operand from a target-independent to a
@@ -692,9 +699,8 @@
SDValue Ops[8];
DebugLoc dl = N->getDebugLoc();
- if (N->isMachineOpcode()) {
+ if (N->isMachineOpcode())
return NULL; // Already selected.
- }
if (Opc == ISD::FrameIndex) {
int FI = cast(N)->getIndex();
@@ -773,29 +779,44 @@
// re-use it in the VEC2PREFSLOT selection without needing to explicitly
// call SelectCode (it's already done for us.)
SelectCode(CurDAG->getNode(ISD::BIT_CONVERT, dl, OpVecVT, zextShuffle).getNode());
- return SelectCode(CurDAG->getNode(SPUISD::VEC2PREFSLOT, dl, OpVT,
- zextShuffle).getNode());
+ HandleSDNode Dummy(CurDAG->getNode(SPUISD::VEC2PREFSLOT, dl, OpVT,
+ zextShuffle));
+
+ CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
+ SelectCode(Dummy.getValue().getNode());
+ return Dummy.getValue().getNode();
} else if (Opc == ISD::ADD && (OpVT == MVT::i64 || OpVT == MVT::v2i64)) {
SDNode *CGLoad =
emitBuildVector(getCarryGenerateShufMask(*CurDAG, dl).getNode());
- return SelectCode(CurDAG->getNode(SPUISD::ADD64_MARKER, dl, OpVT,
- N->getOperand(0), N->getOperand(1),
- SDValue(CGLoad, 0)).getNode());
+ HandleSDNode Dummy(CurDAG->getNode(SPUISD::ADD64_MARKER, dl, OpVT,
+ N->getOperand(0), N->getOperand(1),
+ SDValue(CGLoad, 0)));
+
+ CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
+ SelectCode(Dummy.getValue().getNode());
+ return Dummy.getValue().getNode();
} else if (Opc == ISD::SUB && (OpVT == MVT::i64 || OpVT == MVT::v2i64)) {
SDNode *CGLoad =
emitBuildVector(getBorrowGenerateShufMask(*CurDAG, dl).getNode());
- return SelectCode(CurDAG->getNode(SPUISD::SUB64_MARKER, dl, OpVT,
- N->getOperand(0), N->getOperand(1),
- SDValue(CGLoad, 0)).getNode());
+ HandleSDNode Dummy(CurDAG->getNode(SPUISD::SUB64_MARKER, dl, OpVT,
+ N->getOperand(0), N->getOperand(1),
+ SDValue(CGLoad, 0)));
+
+ CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
+ SelectCode(Dummy.getValue().getNode());
+ return Dummy.getValue().getNode();
} else if (Opc == ISD::MUL && (OpVT == MVT::i64 || OpVT == MVT::v2i64)) {
SDNode *CGLoad =
emitBuildVector(getCarryGenerateShufMask(*CurDAG, dl).getNode());
- return SelectCode(CurDAG->getNode(SPUISD::MUL64_MARKER, dl, OpVT,
- N->getOperand(0), N->getOperand(1),
- SDValue(CGLoad, 0)).getNode());
+ HandleSDNode Dummy(CurDAG->getNode(SPUISD::MUL64_MARKER, dl, OpVT,
+ N->getOperand(0), N->getOperand(1),
+ SDValue(CGLoad, 0)));
+ CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
+ SelectCode(Dummy.getValue().getNode());
+ return Dummy.getValue().getNode();
} else if (Opc == ISD::TRUNCATE) {
SDValue Op0 = N->getOperand(0);
if ((Op0.getOpcode() == ISD::SRA || Op0.getOpcode() == ISD::SRL)
@@ -832,17 +853,14 @@
}
}
} else if (Opc == ISD::SHL) {
- if (OpVT == MVT::i64) {
+ if (OpVT == MVT::i64)
return SelectSHLi64(N, OpVT);
- }
} else if (Opc == ISD::SRL) {
- if (OpVT == MVT::i64) {
+ if (OpVT == MVT::i64)
return SelectSRLi64(N, OpVT);
- }
} else if (Opc == ISD::SRA) {
- if (OpVT == MVT::i64) {
+ if (OpVT == MVT::i64)
return SelectSRAi64(N, OpVT);
- }
} else if (Opc == ISD::FNEG
&& (OpVT == MVT::f64 || OpVT == MVT::v2f64)) {
DebugLoc dl = N->getDebugLoc();
From gohman at apple.com Mon Feb 22 19:28:09 2010
From: gohman at apple.com (Dan Gohman)
Date: Tue, 23 Feb 2010 01:28:09 -0000
Subject: [llvm-commits] [llvm] r96851 -
/llvm/trunk/test/Transforms/InstCombine/ptr-int-cast.ll
Message-ID: <20100223012809.E9D2D2A6C12C@llvm.org>
Author: djg
Date: Mon Feb 22 19:28:09 2010
New Revision: 96851
URL: http://llvm.org/viewvc/llvm-project?rev=96851&view=rev
Log:
Convert this test to FileCheck and add a testcase for PR3574.
Modified:
llvm/trunk/test/Transforms/InstCombine/ptr-int-cast.ll
Modified: llvm/trunk/test/Transforms/InstCombine/ptr-int-cast.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/ptr-int-cast.ll?rev=96851&r1=96850&r2=96851&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/ptr-int-cast.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/ptr-int-cast.ll Mon Feb 22 19:28:09 2010
@@ -1,17 +1,29 @@
-; RUN: opt < %s -instcombine -S > %t
+; RUN: opt < %s -instcombine -S | FileCheck %s
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
define i1 @test1(i32 *%x) nounwind {
entry:
-; RUN: grep {ptrtoint i32\\* %x to i64} %t
+; CHECK: test1
+; CHECK: ptrtoint i32* %x to i64
%tmp = ptrtoint i32* %x to i1
ret i1 %tmp
}
define i32* @test2(i128 %x) nounwind {
entry:
-; RUN: grep {inttoptr i64 %.mp1 to i32\\*} %t
+; CHECK: test2
+; CHECK: inttoptr i64 %tmp1 to i32*
%tmp = inttoptr i128 %x to i32*
ret i32* %tmp
}
+; PR3574
+; CHECK: f0
+; CHECK: %tmp = zext i32 %a0 to i64
+; CHECK: ret i64 %tmp
+define i64 @f0(i32 %a0) nounwind {
+ %t0 = inttoptr i32 %a0 to i8*
+ %t1 = ptrtoint i8* %t0 to i64
+ ret i64 %t1
+}
+
From sabre at nondot.org Mon Feb 22 19:33:17 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 01:33:17 -0000
Subject: [llvm-commits] [llvm] r96852 -
/llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
Message-ID: <20100223013317.684072A6C12C@llvm.org>
Author: lattner
Date: Mon Feb 22 19:33:17 2010
New Revision: 96852
URL: http://llvm.org/viewvc/llvm-project?rev=96852&view=rev
Log:
hack around more crimes in instruction selection.
Modified:
llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
Modified: llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp?rev=96852&r1=96851&r2=96852&view=diff
==============================================================================
--- llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp Mon Feb 22 19:33:17 2010
@@ -296,7 +296,8 @@
(SPU::get_ILHUvec_imm(bvNode, *CurDAG, MVT::i64).getNode() != 0) ||
(SPU::get_vec_u18imm(bvNode, *CurDAG, MVT::i64).getNode() != 0)))) {
HandleSDNode Dummy(SDValue(bvNode, 0));
- Select(bvNode);
+ if (SDNode *N = Select(bvNode))
+ return N;
return Dummy.getValue().getNode();
}
@@ -320,7 +321,8 @@
PseudoSourceValue::getConstantPool(),0,
false, false, Alignment));
CurDAG->ReplaceAllUsesWith(SDValue(bvNode, 0), Dummy.getValue());
- SelectCode(Dummy.getValue().getNode());
+ if (SDNode *N = SelectCode(Dummy.getValue().getNode()))
+ return N;
return Dummy.getValue().getNode();
}
@@ -765,9 +767,8 @@
}
SDNode *shufMaskLoad = emitBuildVector(shufMask.getNode());
- SDNode *PromoteScalar =
- SelectCode(CurDAG->getNode(SPUISD::PREFSLOT2VEC, dl,
- Op0VecVT, Op0).getNode());
+ SDNode *PromoteScalar = CurDAG->getNode(SPUISD::PREFSLOT2VEC, dl,
+ Op0VecVT, Op0).getNode();
SDValue zextShuffle =
CurDAG->getNode(SPUISD::SHUFB, dl, OpVecVT,
@@ -778,9 +779,13 @@
// N.B.: BIT_CONVERT replaces and updates the zextShuffle node, so we
// re-use it in the VEC2PREFSLOT selection without needing to explicitly
// call SelectCode (it's already done for us.)
- SelectCode(CurDAG->getNode(ISD::BIT_CONVERT, dl, OpVecVT, zextShuffle).getNode());
+ HandleSDNode Dummy2(zextShuffle); //CurDAG->getNode(ISD::BIT_CONVERT, dl, OpVecVT,
+ // zextShuffle));
+
+ if (SDNode *N = SelectCode(Dummy2.getValue().getNode()))
+ return N;
HandleSDNode Dummy(CurDAG->getNode(SPUISD::VEC2PREFSLOT, dl, OpVT,
- zextShuffle));
+ Dummy2.getValue()));
CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
SelectCode(Dummy.getValue().getNode());
@@ -794,7 +799,8 @@
SDValue(CGLoad, 0)));
CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
- SelectCode(Dummy.getValue().getNode());
+ if (SDNode *N = SelectCode(Dummy.getValue().getNode()))
+ return N;
return Dummy.getValue().getNode();
} else if (Opc == ISD::SUB && (OpVT == MVT::i64 || OpVT == MVT::v2i64)) {
SDNode *CGLoad =
@@ -805,7 +811,8 @@
SDValue(CGLoad, 0)));
CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
- SelectCode(Dummy.getValue().getNode());
+ if (SDNode *N = SelectCode(Dummy.getValue().getNode()))
+ return N;
return Dummy.getValue().getNode();
} else if (Opc == ISD::MUL && (OpVT == MVT::i64 || OpVT == MVT::v2i64)) {
SDNode *CGLoad =
@@ -815,7 +822,8 @@
N->getOperand(0), N->getOperand(1),
SDValue(CGLoad, 0)));
CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
- SelectCode(Dummy.getValue().getNode());
+ if (SDNode *N = SelectCode(Dummy.getValue().getNode()))
+ return N;
return Dummy.getValue().getNode();
} else if (Opc == ISD::TRUNCATE) {
SDValue Op0 = N->getOperand(0);
@@ -1242,13 +1250,15 @@
? shufmask.getNode()
: emitBuildVector(shufmask.getNode()));
- SDNode *shufNode =
- Select(CurDAG->getNode(SPUISD::SHUFB, dl, OpVecVT,
+ SDValue shufNode =
+ CurDAG->getNode(SPUISD::SHUFB, dl, OpVecVT,
SDValue(lhsNode, 0), SDValue(rhsNode, 0),
- SDValue(shufMaskNode, 0)).getNode());
-
- return CurDAG->getMachineNode(SPU::ORi64_v2i64, dl, OpVT,
- SDValue(shufNode, 0));
+ SDValue(shufMaskNode, 0));
+ HandleSDNode Dummy(shufNode);
+ SDNode *SN = SelectCode(Dummy.getValue().getNode());
+ if (SN == 0) SN = Dummy.getValue().getNode();
+
+ return CurDAG->getMachineNode(SPU::ORi64_v2i64, dl, OpVT, SDValue(SN, 0));
} else if (i64vec.getOpcode() == ISD::BUILD_VECTOR) {
return CurDAG->getMachineNode(SPU::ORi64_v2i64, dl, OpVT,
SDValue(emitBuildVector(i64vec.getNode()), 0));
From sabre at nondot.org Mon Feb 22 19:37:39 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 01:37:39 -0000
Subject: [llvm-commits] [llvm] r96854 -
/llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
Message-ID: <20100223013739.70C9C2A6C12C@llvm.org>
Author: lattner
Date: Mon Feb 22 19:37:39 2010
New Revision: 96854
URL: http://llvm.org/viewvc/llvm-project?rev=96854&view=rev
Log:
fix hte last cellspu failure.
Modified:
llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
Modified: llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp?rev=96854&r1=96853&r2=96854&view=diff
==============================================================================
--- llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp Mon Feb 22 19:37:39 2010
@@ -767,21 +767,22 @@
}
SDNode *shufMaskLoad = emitBuildVector(shufMask.getNode());
- SDNode *PromoteScalar = CurDAG->getNode(SPUISD::PREFSLOT2VEC, dl,
- Op0VecVT, Op0).getNode();
-
+
+ HandleSDNode PromoteScalar(CurDAG->getNode(SPUISD::PREFSLOT2VEC, dl,
+ Op0VecVT, Op0));
+
+ SDValue PromScalar;
+ if (SDNode *N = SelectCode(PromoteScalar.getValue().getNode()))
+ PromScalar = SDValue(N, 0);
+ else
+ PromScalar = PromoteScalar.getValue();
+
SDValue zextShuffle =
CurDAG->getNode(SPUISD::SHUFB, dl, OpVecVT,
- SDValue(PromoteScalar, 0),
- SDValue(PromoteScalar, 0),
+ PromScalar, PromScalar,
SDValue(shufMaskLoad, 0));
- // N.B.: BIT_CONVERT replaces and updates the zextShuffle node, so we
- // re-use it in the VEC2PREFSLOT selection without needing to explicitly
- // call SelectCode (it's already done for us.)
- HandleSDNode Dummy2(zextShuffle); //CurDAG->getNode(ISD::BIT_CONVERT, dl, OpVecVT,
- // zextShuffle));
-
+ HandleSDNode Dummy2(zextShuffle);
if (SDNode *N = SelectCode(Dummy2.getValue().getNode()))
return N;
HandleSDNode Dummy(CurDAG->getNode(SPUISD::VEC2PREFSLOT, dl, OpVT,
From johnny.chen at apple.com Mon Feb 22 19:42:58 2010
From: johnny.chen at apple.com (Johnny Chen)
Date: Tue, 23 Feb 2010 01:42:58 -0000
Subject: [llvm-commits] [llvm] r96856 -
/llvm/trunk/lib/Target/ARM/ARMInstrNEON.td
Message-ID: <20100223014258.E73772A6C12C@llvm.org>
Author: johnny
Date: Mon Feb 22 19:42:58 2010
New Revision: 96856
URL: http://llvm.org/viewvc/llvm-project?rev=96856&view=rev
Log:
Added versions of VCGE, VCGT, VCLE, and VCLT NEON instructions which compare to
(immediate #0) for disassembly only.
A8.6.283, A8.6.285, A8.6.287, A8.6.290
Modified:
llvm/trunk/lib/Target/ARM/ARMInstrNEON.td
Modified: llvm/trunk/lib/Target/ARM/ARMInstrNEON.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrNEON.td?rev=96856&r1=96855&r2=96856&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrNEON.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrNEON.td Mon Feb 22 19:42:58 2010
@@ -1116,18 +1116,19 @@
// Neon 2-register vector operations -- for disassembly only.
// First with only element sizes of 8, 16 and 32 bits:
-multiclass N2V_QHS_np op24_23, bits<2> op21_20, bits<2> op17_16,
- bits<5> op11_7, bit op4, string opc, string asm> {
+multiclass N2V_QHS_cmp op24_23, bits<2> op21_20, bits<2> op17_16,
+ bits<5> op11_7, bit op4, string opc, string Dt,
+ string asm> {
// 64-bit vector types.
def v8i8 : N2V;
+ opc, !strconcat(Dt, "8"), asm, "", []>;
def v4i16 : N2V;
+ opc, !strconcat(Dt, "16"), asm, "", []>;
def v2i32 : N2V;
+ opc, !strconcat(Dt, "32"), asm, "", []>;
def v2f32 : N2V {
@@ -1137,13 +1138,13 @@
// 128-bit vector types.
def v16i8 : N2V;
+ opc, !strconcat(Dt, "8"), asm, "", []>;
def v8i16 : N2V;
+ opc, !strconcat(Dt, "16"), asm, "", []>;
def v4i32 : N2V;
+ opc, !strconcat(Dt, "32"), asm, "", []>;
def v4f32 : N2V {
@@ -1990,7 +1991,8 @@
def VCEQfq : N3VQ<0,0,0b00,0b1110,0, IIC_VBINQ, "vceq", "f32", v4i32, v4f32,
NEONvceq, 1>;
// For disassembly only.
-defm VCEQz : N2V_QHS_np<0b11,0b11,0b01,0b00010,0, "vceq", "$dst, $src, #0">;
+defm VCEQz : N2V_QHS_cmp<0b11, 0b11, 0b01, 0b00010, 0, "vceq", "i",
+ "$dst, $src, #0">;
// VCGE : Vector Compare Greater Than or Equal
defm VCGEs : N3V_QHS<0, 0, 0b0011, 1, IIC_VBINi4D, IIC_VBINi4D, IIC_VBINi4Q,
@@ -2001,6 +2003,13 @@
v2i32, v2f32, NEONvcge, 0>;
def VCGEfq : N3VQ<1,0,0b00,0b1110,0, IIC_VBINQ, "vcge", "f32", v4i32, v4f32,
NEONvcge, 0>;
+// For disassembly only.
+defm VCGEz : N2V_QHS_cmp<0b11, 0b11, 0b01, 0b00001, 0, "vcge", "s",
+ "$dst, $src, #0">;
+// For disassembly only.
+defm VCLEz : N2V_QHS_cmp<0b11, 0b11, 0b01, 0b00011, 0, "vcle", "s",
+ "$dst, $src, #0">;
+
// VCGT : Vector Compare Greater Than
defm VCGTs : N3V_QHS<0, 0, 0b0011, 0, IIC_VBINi4D, IIC_VBINi4D, IIC_VBINi4Q,
IIC_VBINi4Q, "vcgt", "s", NEONvcgt, 0>;
@@ -2010,6 +2019,13 @@
NEONvcgt, 0>;
def VCGTfq : N3VQ<1,0,0b10,0b1110,0, IIC_VBINQ, "vcgt", "f32", v4i32, v4f32,
NEONvcgt, 0>;
+// For disassembly only.
+defm VCGTz : N2V_QHS_cmp<0b11, 0b11, 0b01, 0b00000, 0, "vcgt", "s",
+ "$dst, $src, #0">;
+// For disassembly only.
+defm VCLTz : N2V_QHS_cmp<0b11, 0b11, 0b01, 0b00100, 0, "vclt", "s",
+ "$dst, $src, #0">;
+
// VACGE : Vector Absolute Compare Greater Than or Equal (aka VCAGE)
def VACGEd : N3VDInt<1, 0, 0b00, 0b1110, 1, IIC_VBIND, "vacge", "f32",
v2i32, v2f32, int_arm_neon_vacged, 0>;
From sabre at nondot.org Mon Feb 22 20:07:48 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 02:07:48 -0000
Subject: [llvm-commits] [llvm] r96859 - in /llvm/trunk/lib/Target/X86:
X86ISelLowering.cpp X86ISelLowering.h X86InstrMMX.td
Message-ID: <20100223020749.1A4D92A6C12C@llvm.org>
Author: lattner
Date: Mon Feb 22 20:07:48 2010
New Revision: 96859
URL: http://llvm.org/viewvc/llvm-project?rev=96859&view=rev
Log:
X86InstrInfoSSE.td declares PINSRW as having type v8i16,
don't alis it in the MMX .td file with a different width,
split into two X86ISD opcodes. This fixes an x86 testcase.
Modified:
llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
llvm/trunk/lib/Target/X86/X86ISelLowering.h
llvm/trunk/lib/Target/X86/X86InstrMMX.td
Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=96859&r1=96858&r2=96859&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Mon Feb 22 20:07:48 2010
@@ -4817,8 +4817,16 @@
if ((EltVT.getSizeInBits() == 8 || EltVT.getSizeInBits() == 16) &&
isa(N2)) {
- unsigned Opc = (EltVT.getSizeInBits() == 8) ? X86ISD::PINSRB
- : X86ISD::PINSRW;
+ unsigned Opc;
+ if (VT == MVT::v8i16)
+ Opc = X86ISD::PINSRW;
+ else if (VT == MVT::v4i16)
+ Opc = X86ISD::MMX_PINSRW;
+ else if (VT == MVT::v16i8)
+ Opc = X86ISD::PINSRB;
+ else
+ Opc = X86ISD::PINSRB;
+
// Transform it so it match pinsr{b,w} which expects a GR32 as its second
// argument.
if (N1.getValueType() != MVT::i32)
@@ -4869,7 +4877,8 @@
N1 = DAG.getNode(ISD::ANY_EXTEND, dl, MVT::i32, N1);
if (N2.getValueType() != MVT::i32)
N2 = DAG.getIntPtrConstant(cast(N2)->getZExtValue());
- return DAG.getNode(X86ISD::PINSRW, dl, VT, N0, N1, N2);
+ return DAG.getNode(VT == MVT::v8i16 ? X86ISD::PINSRW : X86ISD::MMX_PINSRW,
+ dl, VT, N0, N1, N2);
}
return SDValue();
}
@@ -7663,6 +7672,7 @@
case X86ISD::INSERTPS: return "X86ISD::INSERTPS";
case X86ISD::PINSRB: return "X86ISD::PINSRB";
case X86ISD::PINSRW: return "X86ISD::PINSRW";
+ case X86ISD::MMX_PINSRW: return "X86ISD::MMX_PINSRW";
case X86ISD::PSHUFB: return "X86ISD::PSHUFB";
case X86ISD::FMAX: return "X86ISD::FMAX";
case X86ISD::FMIN: return "X86ISD::FMIN";
Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.h?rev=96859&r1=96858&r2=96859&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.h (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.h Mon Feb 22 20:07:48 2010
@@ -180,7 +180,7 @@
/// PINSRW - Insert the lower 16-bits of a 32-bit value to a vector,
/// corresponds to X86::PINSRW.
- PINSRW,
+ PINSRW, MMX_PINSRW,
/// PSHUFB - Shuffle 16 8-bit values within a vector.
PSHUFB,
Modified: llvm/trunk/lib/Target/X86/X86InstrMMX.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrMMX.td?rev=96859&r1=96858&r2=96859&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrMMX.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrMMX.td Mon Feb 22 20:07:48 2010
@@ -426,13 +426,15 @@
// Extract / Insert
-def MMX_X86pextrw : SDNode<"X86ISD::PEXTRW", SDTypeProfile<1, 2, []>, []>;
-def MMX_X86pinsrw : SDNode<"X86ISD::PINSRW", SDTypeProfile<1, 3, []>, []>;
+def MMX_X86pinsrw : SDNode<"X86ISD::MMX_PINSRW",
+ SDTypeProfile<1, 3, [SDTCisVT<0, v4i16>, SDTCisSameAs<0,1>,
+ SDTCisVT<2, i32>, SDTCisPtrTy<3>]>>;
+
def MMX_PEXTRWri : MMXIi8<0xC5, MRMSrcReg,
(outs GR32:$dst), (ins VR64:$src1, i16i8imm:$src2),
"pextrw\t{$src2, $src1, $dst|$dst, $src1, $src2}",
- [(set GR32:$dst, (MMX_X86pextrw (v4i16 VR64:$src1),
+ [(set GR32:$dst, (X86pextrw (v4i16 VR64:$src1),
(iPTR imm:$src2)))]>;
let Constraints = "$src1 = $dst" in {
def MMX_PINSRWrri : MMXIi8<0xC4, MRMSrcReg,
From daniel at zuster.org Mon Feb 22 20:09:27 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 02:09:27 -0000
Subject: [llvm-commits] [test-suite] r96860 -
/test-suite/trunk/MultiSource/Applications/Burg/main.c
Message-ID: <20100223020927.4654A2A6C12C@llvm.org>
Author: ddunbar
Date: Mon Feb 22 20:09:27 2010
New Revision: 96860
URL: http://llvm.org/viewvc/llvm-project?rev=96860&view=rev
Log:
main() should return int.
Modified:
test-suite/trunk/MultiSource/Applications/Burg/main.c
Modified: test-suite/trunk/MultiSource/Applications/Burg/main.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Applications/Burg/main.c?rev=96860&r1=96859&r2=96860&view=diff
==============================================================================
--- test-suite/trunk/MultiSource/Applications/Burg/main.c (original)
+++ test-suite/trunk/MultiSource/Applications/Burg/main.c Mon Feb 22 20:09:27 2010
@@ -15,9 +15,9 @@
static char version[] = "BURG, Version 1.0";
-extern void main ARGS((int argc, char **argv));
+extern int main ARGS((int argc, char **argv));
-void
+int
main(argc, argv) int argc; char **argv;
{
int i;
@@ -179,4 +179,5 @@
yypurge();
exit(0);
+ return 0;
}
From daniel at zuster.org Mon Feb 22 20:09:29 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 02:09:29 -0000
Subject: [llvm-commits] [test-suite] r96861 - in /test-suite/trunk:
Makefile.rules Makefile.tests
Message-ID: <20100223020929.A7FB72A6C12D@llvm.org>
Author: ddunbar
Date: Mon Feb 22 20:09:29 2010
New Revision: 96861
URL: http://llvm.org/viewvc/llvm-project?rev=96861&view=rev
Log:
Switch to using LCC_PROGRAMS Makefile variable for the LCC subprograms (for
having proper dependencies on the compiler changing); which is more generic than expecting a cc1 executable.
Modified:
test-suite/trunk/Makefile.rules
test-suite/trunk/Makefile.tests
Modified: test-suite/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.rules?rev=96861&r1=96860&r2=96861&view=diff
==============================================================================
--- test-suite/trunk/Makefile.rules (original)
+++ test-suite/trunk/Makefile.rules Mon Feb 22 20:09:29 2010
@@ -814,9 +814,7 @@
endif
-LCC1 := $(LLVMCC1)
-LCC1XX := $(LLVMCC1PLUS)
-
+LCC_PROGRAMS := $(LLVMCC1) $(LLVMCC1PLUS)
#---------------------------------------------------------
.PRECIOUS: $(PROJ_OBJ_DIR)/Depend/.dir $(PROJ_OBJ_DIR)/BytecodeObj/.dir
@@ -842,10 +840,10 @@
$(PROJ_OBJ_DIR)/Debug/%.lo: %.c $(PROJ_OBJ_DIR)/Debug/.dir
$(CompileCG) $< -o $@
-$(PROJ_OBJ_DIR)/BytecodeObj/%.bc: %.cpp $(PROJ_OBJ_DIR)/BytecodeObj/.dir $(LCC1XX)
+$(PROJ_OBJ_DIR)/BytecodeObj/%.bc: %.cpp $(PROJ_OBJ_DIR)/BytecodeObj/.dir $(LCC_PROGRAMS)
$(LLVMGXX) $(CPPFLAGS) -c $< -o $@
-$(PROJ_OBJ_DIR)/BytecodeObj/%.bc: %.c $(PROJ_OBJ_DIR)/BytecodeObj/.dir $(LCC1)
+$(PROJ_OBJ_DIR)/BytecodeObj/%.bc: %.c $(PROJ_OBJ_DIR)/BytecodeObj/.dir $(LCC_PROGRAMS)
$(LLVMGCC) $(CPPFLAGS) -c $< -o $@
$(PROJ_OBJ_DIR)/BytecodeObj/%.bc: %.ll $(PROJ_OBJ_DIR)/BytecodeObj/.dir $(LLVMAS)
Modified: test-suite/trunk/Makefile.tests
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.tests?rev=96861&r1=96860&r2=96861&view=diff
==============================================================================
--- test-suite/trunk/Makefile.tests (original)
+++ test-suite/trunk/Makefile.tests Mon Feb 22 20:09:29 2010
@@ -38,27 +38,27 @@
$(RM) -rf Output/
# Compile from X.c to Output/X.bc
-Output/%.bc: %.c $(LCC1) Output/.dir $(INCLUDES)
+Output/%.bc: %.c $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
-$(LLVMGCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
# Compile from X.cpp to Output/X.bc
-Output/%.bc: %.cpp $(LCC1XX) Output/.dir $(INCLUDES)
+Output/%.bc: %.cpp $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
-$(LLVMGXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
# Compile from X.cc to Output/X.bc
-Output/%.bc: %.cc $(LCC1XX) Output/.dir $(INCLUDES)
+Output/%.bc: %.cc $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
-$(LLVMGXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
# Compile from X.C to Output/X.bc
-Output/%.bc: %.C $(LCC1XX) Output/.dir $(INCLUDES)
+Output/%.bc: %.C $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
-$(LLVMGXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
# Compile from X.m to Output/X.bc
-Output/%.bc: %.m $(LCC1) Output/.dir $(INCLUDES)
+Output/%.bc: %.m $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
-$(LLVMGCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
# Compile from X.mm to Output/X.bc
-Output/%.bc: %.mm $(LCC1XX) Output/.dir $(INCLUDES)
+Output/%.bc: %.mm $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
-$(LLVMGXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
# LLVM Assemble from X.ll to Output/X.bc. Because we are coming directly from
From daniel at zuster.org Mon Feb 22 20:09:31 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 02:09:31 -0000
Subject: [llvm-commits] [test-suite] r96862 -
/test-suite/trunk/Makefile.rules
Message-ID: <20100223020931.6AE5C2A6C12E@llvm.org>
Author: ddunbar
Date: Mon Feb 22 20:09:31 2010
New Revision: 96862
URL: http://llvm.org/viewvc/llvm-project?rev=96862&view=rev
Log:
Remove unused make variables.
Modified:
test-suite/trunk/Makefile.rules
Modified: test-suite/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.rules?rev=96862&r1=96861&r2=96862&view=diff
==============================================================================
--- test-suite/trunk/Makefile.rules (original)
+++ test-suite/trunk/Makefile.rules Mon Feb 22 20:09:31 2010
@@ -135,8 +135,6 @@
# Variables derived from configuration options...
#--------------------------------------------------------------------
-BURG_OPTS = -I
-
ifeq ($(ENABLE_PROFILING),1)
ENABLE_OPTIMIZED = 1
CONFIGURATION := Profile
@@ -259,9 +257,6 @@
#--------------------------------------------------------------------------
# Utilities used while building the LLVM tree, which live in the utils dir
#
-BURG := $(LLVMTOOLCURRENT)/burg$(EXEEXT)
-RunBurg := $(BURG) $(BURG_OPTS)
-TBLGEN := $(LLVMTOOLCURRENT)/tblgen$(EXEEXT)
LLVMLDPROG := $(LLVMTOOLCURRENT)/llvm-ld$(EXEEXT)
#--------------------------------------------------------------------------
@@ -290,7 +285,6 @@
LPROF = $(LLVMTOOLCURRENT)/llvm-prof$(EXEEXT)
LBUGPOINT = $(LLVMTOOLCURRENT)/bugpoint$(EXEEXT)
LFINDMISOPT= $(LLVM_SRC_ROOT)/utils/findmisopt
-LLVMC = $(LLVMTOOLCURRENT)/llvmc$(EXEEXT)
From daniel at zuster.org Mon Feb 22 20:09:33 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 02:09:33 -0000
Subject: [llvm-commits] [test-suite] r96863 -
/test-suite/trunk/Makefile.rules
Message-ID: <20100223020933.1F6882A6C12F@llvm.org>
Author: ddunbar
Date: Mon Feb 22 20:09:32 2010
New Revision: 96863
URL: http://llvm.org/viewvc/llvm-project?rev=96863&view=rev
Log:
Stop passing -L...libgccdirpath... to llvm-ld, this shouldn't be needed (and if it is, this isn't the right solution).
Modified:
test-suite/trunk/Makefile.rules
Modified: test-suite/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.rules?rev=96863&r1=96862&r2=96863&view=diff
==============================================================================
--- test-suite/trunk/Makefile.rules (original)
+++ test-suite/trunk/Makefile.rules Mon Feb 22 20:09:32 2010
@@ -278,7 +278,7 @@
# Makefile.rules)
LLI = $(LLVMTOOLCURRENT)/lli$(EXEEXT)
LLC = $(LLVMTOOLCURRENT)/llc$(EXEEXT)
-LLVMLD = $(LLVMLDPROG) -L$(LLVMGCCLIBDIR) -L$(LLVMGCCDIR)/lib
+LLVMLD = $(LLVMLDPROG)
LDIS = $(LLVMTOOLCURRENT)/llvm-dis$(EXEEXT)
LOPT = $(LLVMTOOLCURRENT)/opt$(EXEEXT)
LLINK = $(LLVMTOOLCURRENT)/llvm-link$(EXEEXT)
From daniel at zuster.org Mon Feb 22 20:09:35 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 02:09:35 -0000
Subject: [llvm-commits] [test-suite] r96864 - in /test-suite/trunk:
Makefile.dummylib Makefile.programs Makefile.rules
MultiSource/Makefile.multisrc
Message-ID: <20100223020935.883D32A6C12C@llvm.org>
Author: ddunbar
Date: Mon Feb 22 20:09:35 2010
New Revision: 96864
URL: http://llvm.org/viewvc/llvm-project?rev=96864&view=rev
Log:
Inline LLVMLDPROG into LLVMLD.
Modified:
test-suite/trunk/Makefile.dummylib
test-suite/trunk/Makefile.programs
test-suite/trunk/Makefile.rules
test-suite/trunk/MultiSource/Makefile.multisrc
Modified: test-suite/trunk/Makefile.dummylib
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.dummylib?rev=96864&r1=96863&r2=96864&view=diff
==============================================================================
--- test-suite/trunk/Makefile.dummylib (original)
+++ test-suite/trunk/Makefile.dummylib Mon Feb 22 20:09:35 2010
@@ -20,4 +20,4 @@
LINKED_PROGS := $(PROGRAMS_TO_TEST:%=Output/%.lib.bc)
$(LINKED_PROGS): Output/%.lib.bc: Output/%.llvm.bc $(DUMMYLIB)
- $(LLVMLDPROG) --link-as-library $< $(DUMMYLIB) -o $@
+ $(LLVMLD) --link-as-library $< $(DUMMYLIB) -o $@
Modified: test-suite/trunk/Makefile.programs
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.programs?rev=96864&r1=96863&r2=96864&view=diff
==============================================================================
--- test-suite/trunk/Makefile.programs (original)
+++ test-suite/trunk/Makefile.programs Mon Feb 22 20:09:35 2010
@@ -283,7 +283,7 @@
endif
$(PROGRAMS_TO_TEST:%=Output/%.llvm): \
-Output/%.llvm: Output/%.linked.bc $(LLVMLDPROG)
+Output/%.llvm: Output/%.linked.bc $(LLVMLD)
$(RUNTOOLSAFELY) $(LLVMLD) -info-output-file=$(CURDIR)/$@.info $(STATS) $< \
$(EXTRA_LINKTIME_OPT_FLAGS) $(LLVMLD_FLAGS) -lc $(LIBS) -o Output/$*.llvm
ifneq ($(OPTPASSES),)
@@ -292,33 +292,33 @@
endif
$(PROGRAMS_TO_TEST:%=Output/%.llvm.optbeta.bc): \
-Output/%.llvm.optbeta.bc: Output/%.linked.optbeta.bc $(LLVMLDPROG)
+Output/%.llvm.optbeta.bc: Output/%.linked.optbeta.bc $(LLVMLD)
$(RUNTOOLSAFELY) $(LLVMLD) -info-output-file=$(CURDIR)/$@.info $(STATS) $< \
$(EXTRA_LINKTIME_OPT_FLAGS) $(LLVMLD_FLAGS) -lc $(LIBS) -o Output/$*.llvm.optbeta
$(PROGRAMS_TO_TEST:%=Output/%.llvm.optbeta): \
-Output/%.llvm.optbeta: Output/%.linked.optbeta.bc $(LLVMLDPROG)
+Output/%.llvm.optbeta: Output/%.linked.optbeta.bc $(LLVMLD)
$(RUNTOOLSAFELY) $(LLVMLD) -info-output-file=$(CURDIR)/$@.info $(STATS) $< \
$(EXTRA_LINKTIME_OPT_FLAGS) $(LLVMLD_FLAGS) -lc $(LIBS) -o Output/$*.llvm.optbeta
$(PROGRAMS_TO_TEST:%=Output/%.noopt-llvm.bc): \
-Output/%.noopt-llvm.bc: Output/%.linked.rbc $(LLVMLDPROG)
+Output/%.noopt-llvm.bc: Output/%.linked.rbc $(LLVMLD)
$(RUNTOOLSAFELY) $(LLVMLD) -disable-opt -info-output-file=$(CURDIR)/$@.info $(STATS) $< \
$(LLVMLD_FLAGS) -lc $(LIBS) -o Output/$*.noopt-llvm
$(PROGRAMS_TO_TEST:%=Output/%.noopt-llvm): \
-Output/%.noopt-llvm: Output/%.linked.rbc $(LLVMLDPROG)
+Output/%.noopt-llvm: Output/%.linked.rbc $(LLVMLD)
$(RUNTOOLSAFELY) $(LLVMLD) -disable-opt -info-output-file=$(CURDIR)/$@.info $(STATS) $< \
$(LLVMLD_FLAGS) -lc $(LIBS) -o Output/$*.noopt-llvm
$(PROGRAMS_TO_TEST:%=Output/%.nollvm-ldopt-llvm.bc): \
-Output/%.nollvm-ldopt-llvm.bc: Output/%.linked.bc $(LLVMLDPROG)
+Output/%.nollvm-ldopt-llvm.bc: Output/%.linked.bc $(LLVMLD)
$(RUNTOOLSAFELY) $(LLVMLD) -disable-opt -info-output-file=$(CURDIR)/$@.info $(STATS) $< \
$(LLVMLD_FLAGS) -lc $(LIBS) -o Output/$*.nollvm-ldopt-llvm
$(PROGRAMS_TO_TEST:%=Output/%.nollvm-ldopt-llvm): \
-Output/%.nollvm-ldopt-llvm: Output/%.linked.rbc $(LLVMLDPROG)
+Output/%.nollvm-ldopt-llvm: Output/%.linked.rbc $(LLVMLD)
$(RUNTOOLSAFELY) $(LLVMLD) -disable-opt -info-output-file=$(CURDIR)/$@.info $(STATS) $< \
$(LLVMLD_FLAGS) -lc $(LIBS) -o Output/$*.nollvm-ldopt-llvm
Modified: test-suite/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.rules?rev=96864&r1=96863&r2=96864&view=diff
==============================================================================
--- test-suite/trunk/Makefile.rules (original)
+++ test-suite/trunk/Makefile.rules Mon Feb 22 20:09:35 2010
@@ -255,11 +255,6 @@
###########################################################################
#--------------------------------------------------------------------------
-# Utilities used while building the LLVM tree, which live in the utils dir
-#
-LLVMLDPROG := $(LLVMTOOLCURRENT)/llvm-ld$(EXEEXT)
-
-#--------------------------------------------------------------------------
# The LLVM GCC front-end in C and C++ flavors
#
ifeq ($(LLVMGCC_MAJVERS),3)
@@ -278,7 +273,7 @@
# Makefile.rules)
LLI = $(LLVMTOOLCURRENT)/lli$(EXEEXT)
LLC = $(LLVMTOOLCURRENT)/llc$(EXEEXT)
-LLVMLD = $(LLVMLDPROG)
+LLVMLD = $(LLVMTOOLCURRENT)/llvm-ld$(EXEEXT)
LDIS = $(LLVMTOOLCURRENT)/llvm-dis$(EXEEXT)
LOPT = $(LLVMTOOLCURRENT)/opt$(EXEEXT)
LLINK = $(LLVMTOOLCURRENT)/llvm-link$(EXEEXT)
Modified: test-suite/trunk/MultiSource/Makefile.multisrc
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Makefile.multisrc?rev=96864&r1=96863&r2=96864&view=diff
==============================================================================
--- test-suite/trunk/MultiSource/Makefile.multisrc (original)
+++ test-suite/trunk/MultiSource/Makefile.multisrc Mon Feb 22 20:09:35 2010
@@ -53,8 +53,8 @@
ifndef USE_PRECOMPILED_BYTECODE
$(PROGRAMS_TO_TEST:%=Output/%.linked.rbc): \
-Output/%.linked.rbc: $(LObjects) $(LLVMLDPROG)
- -$(LLVMLDPROG) -link-as-library -disable-opt $(LObjects) -o $@
+Output/%.linked.rbc: $(LObjects) $(LLVMLD)
+ -$(LLVMLD) -link-as-library -disable-opt $(LObjects) -o $@
$(PROGRAMS_TO_TEST:%=Output/%.LOC.txt): \
Output/%.LOC.txt: $(Source)
From daniel at zuster.org Mon Feb 22 20:09:43 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 02:09:43 -0000
Subject: [llvm-commits] [test-suite] r96868 - in /test-suite/trunk:
TEST.fourway-debuginfo.Makefile TEST.fourway-debuginfo.report
TEST.fourway-time.Makefile TEST.fourway-time.report TEST.fourway.Makefile
TEST.fourway.report fourway.Makefile
Message-ID: <20100223020943.883CD2A6C12C@llvm.org>
Author: ddunbar
Date: Mon Feb 22 20:09:43 2010
New Revision: 96868
URL: http://llvm.org/viewvc/llvm-project?rev=96868&view=rev
Log:
Remove TEST=fourway, no one uses this.
Removed:
test-suite/trunk/TEST.fourway-debuginfo.Makefile
test-suite/trunk/TEST.fourway-debuginfo.report
test-suite/trunk/TEST.fourway-time.Makefile
test-suite/trunk/TEST.fourway-time.report
test-suite/trunk/TEST.fourway.Makefile
test-suite/trunk/TEST.fourway.report
test-suite/trunk/fourway.Makefile
Removed: test-suite/trunk/TEST.fourway-debuginfo.Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/TEST.fourway-debuginfo.Makefile?rev=96867&view=auto
==============================================================================
--- test-suite/trunk/TEST.fourway-debuginfo.Makefile (original)
+++ test-suite/trunk/TEST.fourway-debuginfo.Makefile (removed)
@@ -1,22 +0,0 @@
-##===- TEST.fourway.Makefile -------------------------------*- Makefile -*-===##
-#
-# This test tries running the gcc and llvm-gcc compilers on all of the programs
-# with and without debuginfo and reports on resulting sizes.
-#
-##===----------------------------------------------------------------------===##
-
-include $(LEVEL)/fourway.Makefile
-
-$(PROGRAMS_TO_TEST:%=test.$(TEST).%): \
-test.$(TEST).%: $(LLVMGCC) $(LLVMGXX) \
-Output/%.report.$(TEST).txt \
-Output/%.gcc.nodebug.size \
-Output/%.gcc.debug.size \
-Output/%.llvmgcc.nodebug.size \
-Output/%.llvmgcc.debug.size
- @-cat Output/$*.gcc.nodebug.size
- @-cat Output/$*.gcc.debug.size
- @-cat Output/$*.llvmgcc.nodebug.size
- @-cat Output/$*.llvmgcc.debug.size
-
-
Removed: test-suite/trunk/TEST.fourway-debuginfo.report
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/TEST.fourway-debuginfo.report?rev=96867&view=auto
==============================================================================
--- test-suite/trunk/TEST.fourway-debuginfo.report (original)
+++ test-suite/trunk/TEST.fourway-debuginfo.report (removed)
@@ -1,50 +0,0 @@
-##=== TEST.fourway.report - Report description for llc tests ---*- perl -*-===##
-#
-# This file defines a report to be generated for the fourway-debuginfo test.
-#
-##===----------------------------------------------------------------------===##
-
-# Sort by name
-$SortCol = 1;
-$TrimRepeatedPrefix = 1;
-my $ExtTextSize = '(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+[0-9a-fA-F]+';
-my $ExtDataSize = '\d+\s+(\d+)\s+\d+\s+\d+\s+\d+\s+[0-9a-fA-F]+';
-my $ExtObjSize = '\d+\s+\d+\s+(\d+)\s+\d+\s+\d+\s+[0-9a-fA-F]+';
-my $ExtOtherSize = '\d+\s+\d+\s+\d+\s+(\d+)\s+\d+\s+[0-9a-fA-F]+';
-my $ExtTotalSize = '\d+\s+\d+\s+\d+\s+\d+\s+(\d+)\s+[0-9a-fA-F]+';
-
-sub Percentage {
- my ($Cols, $Col) = @_;
- my $GCC = $Cols->[$Col-2];
- my $LLVMGCC = $Cols->[$Col-1];
- return "n/a" if ($GCC eq "*" or $LLVMGCC eq "*");
- return sprintf("%5.1f%%", $LLVMGCC / $GCC * 100)
- if ($GCC > 0 and $LLVMGCC > 0);
- return " -";
-}
-
-# These are the columns for the report. The first entry is the header for the
-# column, the second is the regex to use to match the value. Empty list create
-# seperators, and closures may be put in for custom processing.
-(
-# Name
- ["Name:" , '\'([^\']+)\' Program'],
- [],
-# Text Sizes
- ["Text GND", "${ExtTextSize}gcc.nodebug"],
- ["Text GD", "${ExtTextSize}gcc.debug"],
- ["Text LND", "${ExtTextSize}llvmgcc.nodebug"],
- ["Text LD", "${ExtTextSize}llvmgcc.debug"],
- [],
-# Other Sizes
- ["Debug* GCC", "${ExtOtherSize}gcc.debug"],
- ["Debug* LLVM-GCC", "${ExtOtherSize}llvmgcc.debug"],
- ["Debug* %", \&Percentage],
- [],
-# Total Sizes
- ["Total GND", "${ExtTotalSize}gcc.nodebug"],
- ["Total GD", "${ExtTotalSize}gcc.debug"],
- ["Total LND", "${ExtTotalSize}llvmgcc.nodebug"],
- ["Total LD", "${ExtTotalSize}llvmgcc.debug"],
- [],
- );
Removed: test-suite/trunk/TEST.fourway-time.Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/TEST.fourway-time.Makefile?rev=96867&view=auto
==============================================================================
--- test-suite/trunk/TEST.fourway-time.Makefile (original)
+++ test-suite/trunk/TEST.fourway-time.Makefile (removed)
@@ -1,22 +0,0 @@
-##===- TEST.fourway.Makefile -------------------------------*- Makefile -*-===##
-#
-# This test tries running the gcc and llvm-gcc compilers on all of the programs
-# with and without debuginfo and reports on compile time.
-#
-##===----------------------------------------------------------------------===##
-
-include $(LEVEL)/fourway.Makefile
-
-$(PROGRAMS_TO_TEST:%=test.$(TEST).%): \
-test.$(TEST).%: $(LLVMGCC) $(LLVMGXX) \
-Output/%.report.$(TEST).txt \
-Output/%.gcc.nodebug.time \
-Output/%.gcc.debug.time \
-Output/%.llvmgcc.nodebug.time \
-Output/%.llvmgcc.debug.time
- @-cat Output/$*.gcc.nodebug.time
- @-cat Output/$*.gcc.debug.time
- @-cat Output/$*.llvmgcc.nodebug.time
- @-cat Output/$*.llvmgcc.debug.time
-
-
Removed: test-suite/trunk/TEST.fourway-time.report
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/TEST.fourway-time.report?rev=96867&view=auto
==============================================================================
--- test-suite/trunk/TEST.fourway-time.report (original)
+++ test-suite/trunk/TEST.fourway-time.report (removed)
@@ -1,38 +0,0 @@
-##=== TEST.fourway.report - Report description for llc tests ---*- perl -*-===##
-#
-# This file defines a report to be generated for the fourway-time test.
-#
-##===----------------------------------------------------------------------===##
-
-# Sort by name
-$SortCol = 1;
-$TrimRepeatedPrefix = 1;
-
-sub Percentage {
- my ($Cols, $Col) = @_;
- my $GCC = $Cols->[$Col-5];
- my $LLVMGCC = $Cols->[$Col-4];
- return "n/a" if ($GCC eq "*" or $LLVMGCC eq "*");
- return sprintf("%5.1f%%", $LLVMGCC / $GCC * 100)
- if ($GCC >= 0.01 and $LLVMGCC >= 0.01);
- return " -";
-}
-
-# These are the columns for the report. The first entry is the header for the
-# column, the second is the regex to use to match the value. Empty list create
-# seperators, and closures may be put in for custom processing.
-(
-# Name
- ["Name:" , '\'([^\']+)\' Program'],
- [],
-# Times
- ["Time GND", 'real ([0-9.]+)gcc\.nodebug'],
- ["Time GD", 'real ([0-9.]+)gcc\.debug'],
- ["Time LND", 'real ([0-9.]+)llvmgcc\.nodebug'],
- ["Time LD", 'real ([0-9.]+)llvmgcc\.debug'],
- [],
-# Time Ratios
- ["No Debug", \&Percentage],
- ["Debug", \&Percentage],
- [],
- );
Removed: test-suite/trunk/TEST.fourway.Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/TEST.fourway.Makefile?rev=96867&view=auto
==============================================================================
--- test-suite/trunk/TEST.fourway.Makefile (original)
+++ test-suite/trunk/TEST.fourway.Makefile (removed)
@@ -1,30 +0,0 @@
-##===- TEST.fourway.Makefile -------------------------------*- Makefile -*-===##
-#
-# This test tries running the gcc and llvm-gcc compilers on all of the programs
-# with and without debuginfo and reports on compile time and resulting sizes.
-#
-##===----------------------------------------------------------------------===##
-
-include $(LEVEL)/fourway.Makefile
-
-$(PROGRAMS_TO_TEST:%=test.$(TEST).%): \
-test.$(TEST).%: $(LLVMGCC) $(LLVMGXX) \
-Output/%.report.$(TEST).txt \
-Output/%.gcc.nodebug.time \
-Output/%.gcc.debug.time \
-Output/%.llvmgcc.nodebug.time \
-Output/%.llvmgcc.debug.time \
-Output/%.gcc.nodebug.size \
-Output/%.gcc.debug.size \
-Output/%.llvmgcc.nodebug.size \
-Output/%.llvmgcc.debug.size
- @-cat Output/$*.gcc.nodebug.time
- @-cat Output/$*.gcc.debug.time
- @-cat Output/$*.llvmgcc.nodebug.time
- @-cat Output/$*.llvmgcc.debug.time
- @-cat Output/$*.gcc.nodebug.size
- @-cat Output/$*.gcc.debug.size
- @-cat Output/$*.llvmgcc.nodebug.size
- @-cat Output/$*.llvmgcc.debug.size
-
-
Removed: test-suite/trunk/TEST.fourway.report
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/TEST.fourway.report?rev=96867&view=auto
==============================================================================
--- test-suite/trunk/TEST.fourway.report (original)
+++ test-suite/trunk/TEST.fourway.report (removed)
@@ -1,49 +0,0 @@
-##=== TEST.fourway.report - Report description for llc tests ---*- perl -*-===##
-#
-# This file defines a report to be generated for the fourway test.
-#
-##===----------------------------------------------------------------------===##
-
-# Sort by name
-$SortCol = 1;
-$TrimRepeatedPrefix = 1;
-my $ExtTextSize = '(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+[0-9a-fA-F]+';
-my $ExtDataSize = '\d+\s+(\d+)\s+\d+\s+\d+\s+\d+\s+[0-9a-fA-F]+';
-my $ExtObjSize = '\d+\s+\d+\s+(\d+)\s+\d+\s+\d+\s+[0-9a-fA-F]+';
-my $ExtOtherSize = '\d+\s+\d+\s+\d+\s+(\d+)\s+\d+\s+[0-9a-fA-F]+';
-my $ExtTotalSize = '\d+\s+\d+\s+\d+\s+\d+\s+(\d+)\s+[0-9a-fA-F]+';
-
-# These are the columns for the report. The first entry is the header for the
-# column, the second is the regex to use to match the value. Empty list create
-# seperators, and closures may be put in for custom processing.
-(
-# Name
- ["Name:" , '\'([^\']+)\' Program'],
- [],
-# Times
- ["Time GND", 'real ([0-9.]+)gcc\.nodebug'],
- ["Time GD", 'real ([0-9.]+)gcc\.debug'],
- ["Time LND", 'real ([0-9.]+)llvmgcc\.nodebug'],
- ["Time LD", 'real ([0-9.]+)llvmgcc\.debug'],
- [],
-# Text Sizes
- ["Text GND", "${ExtTextSize}gcc.nodebug"],
- ["Text GD", "${ExtTextSize}gcc.debug"],
- ["Text LND", "${ExtTextSize}llvmgcc.nodebug"],
- ["Text LD", "${ExtTextSize}llvmgcc.debug"],
- [],
-# Data Sizes
- ["Data GCC", "${ExtDataSize}gcc.nodebug"],
- ["Data LLVM-GCC", "${ExtDataSize}llvmgcc.nodebug"],
- [],
-# Other Sizes
- ["Other(Debug) GCC", "${ExtOtherSize}gcc.debug"],
- ["Other(Debug) LLVM-GCC", "${ExtOtherSize}llvmgcc.debug"],
- [],
-# Total Sizes
- ["Total GND", "${ExtTotalSize}gcc.nodebug"],
- ["Total GD", "${ExtTotalSize}gcc.debug"],
- ["Total LND", "${ExtTotalSize}llvmgcc.nodebug"],
- ["Total LD", "${ExtTotalSize}llvmgcc.debug"],
- [],
- );
Removed: test-suite/trunk/fourway.Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/fourway.Makefile?rev=96867&view=auto
==============================================================================
--- test-suite/trunk/fourway.Makefile (original)
+++ test-suite/trunk/fourway.Makefile (removed)
@@ -1,73 +0,0 @@
-##===- fourway.Makefile ------------------------------------*- Makefile -*-===##
-#
-# This file is intended to be included in four-way (gcc vs. llvm-gcc by
-# debug vs. non-debug) reports, to provide raw data generating targets.
-#
-##===----------------------------------------------------------------------===##
-
-Output/%.report.$(TEST).txt:
- @echo "---------------------------------------------------------------"
- @echo ">>> ========= '$*' Program"
- @echo "---------------------------------------------------------------"
-
-
-Output/%.gcc.nodebug.o: %.cpp Output/.dir
- @-(time -p $(CXX) $*.cpp -O0 -c -o $@) 2>&1 | \
- sed -e s/$$/gcc.nodebug/ > Output/$*.gcc.nodebug.time
-
-Output/%.gcc.debug.o: %.cpp Output/.dir
- @-(time -p $(CXX) $*.cpp -O0 -gdwarf-2 -c -o $@) 2>&1 | \
- sed -e s/$$/gcc.debug/ > Output/$*.gcc.debug.time
-
-Output/%.llvmgcc.nodebug.o: %.cpp Output/.dir $(LLVMGXX)
- @-(time -p $(LLVMGXX) $*.cpp -O0 -c -o $@) 2>&1 | \
- sed -e s/$$/llvmgcc.nodebug/ > Output/$*.llvmgcc.nodebug.time
-
-Output/%.llvmgcc.debug.o: %.cpp Output/.dir $(LLVMGXX)
- @-(time -p $(LLVMGXX) $*.cpp -O0 -g -c -o $@) 2>&1 | \
- sed -e s/$$/llvmgcc.debug/ > Output/$*.llvmgcc.debug.time
-
-Output/%.gcc.nodebug.o: %.c Output/.dir
- @-(time -p $(CC) $*.c -O0 -c -o $@) 2>&1 | \
- sed -e s/$$/gcc.nodebug/ > Output/$*.gcc.nodebug.time
-
-Output/%.gcc.debug.o: %.c Output/.dir
- @-(time -p $(CC) $*.c -O0 -gdwarf-2 -c -o $@) 2>&1 | \
- sed -e s/$$/gcc.debug/ > Output/$*.gcc.debug.time
-
-Output/%.llvmgcc.nodebug.o: %.c Output/.dir $(LLVMGCC)
- @-(time -p $(LLVMGCC) $*.c -O0 -c -o $@) 2>&1 | \
- sed -e s/$$/llvmgcc.nodebug/ > Output/$*.llvmgcc.nodebug.time
-
-Output/%.llvmgcc.debug.o: %.c Output/.dir $(LLVMGCC)
- @-(time -p $(LLVMGCC) $*.c -O0 -g -c -o $@) 2>&1 | \
- sed -e s/$$/llvmgcc.debug/ > Output/$*.llvmgcc.debug.time
-
-
-Output/%.time: Output/%.o
- @echo "" > /dev/null
-
-
-Output/%.gcc.nodebug.size: Output/%.gcc.nodebug.o
- @-size Output/$*.gcc.nodebug.o 2>&1 | \
- sed -e s/$$/gcc.nodebug/ > $@
- @-size -m Output/$*.gcc.nodebug.o 2>&1 | \
- sed -e s/$$/gcc.nodebug/ >> $@
-
-Output/%.gcc.debug.size: Output/%.gcc.debug.o
- @-size Output/$*.gcc.debug.o 2>&1 | \
- sed -e s/$$/gcc.debug/ > $@
- @-size -m Output/$*.gcc.debug.o 2>&1 | \
- sed -e s/$$/gcc.debug/ >> $@
-
-Output/%.llvmgcc.nodebug.size: Output/%.llvmgcc.nodebug.o
- @-size Output/$*.llvmgcc.nodebug.o 2>&1 | \
- sed -e s/$$/llvmgcc.nodebug/ > $@
- @-size -m Output/$*.llvmgcc.nodebug.o 2>&1 | \
- sed -e s/$$/llvmgcc.nodebug/ >> $@
-
-Output/%.llvmgcc.debug.size: Output/%.llvmgcc.debug.o
- @-size Output/$*.llvmgcc.debug.o 2>&1 | \
- sed -e s/$$/llvmgcc.debug/ > $@
- @-size -m Output/$*.llvmgcc.debug.o 2>&1 | \
- sed -e s/$$/llvmgcc.debug/ >> $@
From daniel at zuster.org Mon Feb 22 20:09:37 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 02:09:37 -0000
Subject: [llvm-commits] [test-suite] r96865 - in /test-suite/trunk:
Makefile.rules SingleSource/UnitTests/Makefile
Message-ID: <20100223020937.CF15C2A6C12D@llvm.org>
Author: ddunbar
Date: Mon Feb 22 20:09:37 2010
New Revision: 96865
URL: http://llvm.org/viewvc/llvm-project?rev=96865&view=rev
Log:
Kill crufty llvm-gcc3 checks.
Modified:
test-suite/trunk/Makefile.rules
test-suite/trunk/SingleSource/UnitTests/Makefile
Modified: test-suite/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.rules?rev=96865&r1=96864&r2=96865&view=diff
==============================================================================
--- test-suite/trunk/Makefile.rules (original)
+++ test-suite/trunk/Makefile.rules Mon Feb 22 20:09:37 2010
@@ -255,14 +255,6 @@
###########################################################################
#--------------------------------------------------------------------------
-# The LLVM GCC front-end in C and C++ flavors
-#
-ifeq ($(LLVMGCC_MAJVERS),3)
-LLVMGCC := PATH="$(LLVMTOOLCURRENT):$(PATH)" $(LLVMGCC)
-LLVMGXX := PATH="$(LLVMTOOLCURRENT):$(PATH)" $(LLVMGXX)
-endif
-
-#--------------------------------------------------------------------------
# The compiled LLVM tools
#
Modified: test-suite/trunk/SingleSource/UnitTests/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/Makefile?rev=96865&r1=96864&r2=96865&view=diff
==============================================================================
--- test-suite/trunk/SingleSource/UnitTests/Makefile (original)
+++ test-suite/trunk/SingleSource/UnitTests/Makefile Mon Feb 22 20:09:37 2010
@@ -4,14 +4,10 @@
DIRS := SetjmpLongjmp
-# llvm-gcc3 does not support any vector tests.
-ifneq ($(LLVMGCC_MAJVERS),3)
-
# FIXME: Disable SJLJ tests for now, until EH edges are represented.
DIRS :=
DIRS += Vector
-endif
DIRS += SignlessTypes Threads
From daniel at zuster.org Mon Feb 22 20:09:39 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 02:09:39 -0000
Subject: [llvm-commits] [test-suite] r96866 - in /test-suite/trunk:
Makefile.config.in Makefile.rules
Message-ID: <20100223020939.C0B5F2A6C12E@llvm.org>
Author: ddunbar
Date: Mon Feb 22 20:09:39 2010
New Revision: 96866
URL: http://llvm.org/viewvc/llvm-project?rev=96866&view=rev
Log:
Drop LLVMGCC*DIR variables.
Modified:
test-suite/trunk/Makefile.config.in
test-suite/trunk/Makefile.rules
Modified: test-suite/trunk/Makefile.config.in
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.config.in?rev=96866&r1=96865&r2=96866&view=diff
==============================================================================
--- test-suite/trunk/Makefile.config.in (original)
+++ test-suite/trunk/Makefile.config.in Mon Feb 22 20:09:39 2010
@@ -51,14 +51,6 @@
LLVMGXX := $(TARGET_LLVMGXX)
endif
-ifdef TARGET_LLVMGCCDIR
-LLVMGCCDIR := $(TARGET_LLVMGCCDIR)
-endif
-
-ifdef TARGET_LLVMGCCLIBDIR
-LLVMGCCLIBDIR := $(TARGET_LLVMGCCLIBDIR)
-endif
-
ifeq ($(ARCH),THUMB)
TARGET_FLAGS += -mthumb
endif
Modified: test-suite/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.rules?rev=96866&r1=96865&r2=96866&view=diff
==============================================================================
--- test-suite/trunk/Makefile.rules (original)
+++ test-suite/trunk/Makefile.rules Mon Feb 22 20:09:39 2010
@@ -259,8 +259,6 @@
#
LLVMAS := $(LLVMTOOLCURRENT)/llvm-as$(EXEEXT)
-# Find the location of the platform specific LLVM GCC libraries
-LLVMGCCLIBDIR=$(LLVMGCCDIR)/lib/gcc/$(LLVMGCCARCH)
# LLVM Tool Definitions (LLVMGCC, LLVMGXX, LLVMAS are provided by
# Makefile.rules)
LLI = $(LLVMTOOLCURRENT)/lli$(EXEEXT)
From daniel at zuster.org Mon Feb 22 20:09:41 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 02:09:41 -0000
Subject: [llvm-commits] [test-suite] r96867 -
/test-suite/trunk/Makefile.programs
Message-ID: <20100223020941.7964F2A6C12F@llvm.org>
Author: ddunbar
Date: Mon Feb 22 20:09:41 2010
New Revision: 96867
URL: http://llvm.org/viewvc/llvm-project?rev=96867&view=rev
Log:
Rename LLVMGCCLD to PROGRAMLD to reflect its intent a bit better.
Modified:
test-suite/trunk/Makefile.programs
Modified: test-suite/trunk/Makefile.programs
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.programs?rev=96867&r1=96866&r2=96867&view=diff
==============================================================================
--- test-suite/trunk/Makefile.programs (original)
+++ test-suite/trunk/Makefile.programs Mon Feb 22 20:09:41 2010
@@ -357,13 +357,13 @@
endif
# It is important to link C++ programs with G++ so look for -lstdc++ in LDFLAGS
-# and set the LLVMGCCLD variable to the correct compiler interface to use.
+# and set the PROGRAMLD variable to the correct compiler interface to use.
# Note that LDFLAGS must already be defined at the time this file is included,
# or this will not work.
ifneq ($(filter -lstdc++,$(LDFLAGS)),)
-LLVMGCCLD := $(CXX)
+PROGRAMLD := $(CXX)
else
-LLVMGCCLD := $(CC)
+PROGRAMLD := $(CC)
endif
#
@@ -409,15 +409,15 @@
#
$(PROGRAMS_TO_TEST:%=Output/%.llc): \
Output/%.llc: Output/%.llc.s
- -$(LLVMGCCLD) $< -o $@ $(LLCLIBS) $(LLCASSEMBLERFLAGS) $(TARGET_FLAGS) $(LDFLAGS)
+ -$(PROGRAMLD) $< -o $@ $(LLCLIBS) $(LLCASSEMBLERFLAGS) $(TARGET_FLAGS) $(LDFLAGS)
$(PROGRAMS_TO_TEST:%=Output/%.llc-beta): \
Output/%.llc-beta: Output/%.llc-beta.s
- -$(LLVMGCCLD) $< -o $@ $(LLCLIBS) $(LLCASSEMBLERFLAGS) $(TARGET_FLAGS) $(LDFLAGS)
+ -$(PROGRAMLD) $< -o $@ $(LLCLIBS) $(LLCASSEMBLERFLAGS) $(TARGET_FLAGS) $(LDFLAGS)
$(PROGRAMS_TO_TEST:%=Output/%.opt-beta): \
Output/%.opt-beta: Output/%.opt-beta.s
- -$(LLVMGCCLD) $< -o $@ $(LLCLIBS) $(LLCASSEMBLERFLAGS) $(TARGET_FLAGS) $(LDFLAGS)
+ -$(PROGRAMLD) $< -o $@ $(LLCLIBS) $(LLCASSEMBLERFLAGS) $(TARGET_FLAGS) $(LDFLAGS)
#
From daniel at zuster.org Mon Feb 22 20:09:46 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 02:09:46 -0000
Subject: [llvm-commits] [test-suite] r96869 -
/test-suite/trunk/External/SPEC/CINT2000/252.eon/Makefile
Message-ID: <20100223020946.2B6642A6C12C@llvm.org>
Author: ddunbar
Date: Mon Feb 22 20:09:46 2010
New Revision: 96869
URL: http://llvm.org/viewvc/llvm-project?rev=96869&view=rev
Log:
Remove some random unused make variable.
Modified:
test-suite/trunk/External/SPEC/CINT2000/252.eon/Makefile
Modified: test-suite/trunk/External/SPEC/CINT2000/252.eon/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/External/SPEC/CINT2000/252.eon/Makefile?rev=96869&r1=96868&r2=96869&view=diff
==============================================================================
--- test-suite/trunk/External/SPEC/CINT2000/252.eon/Makefile (original)
+++ test-suite/trunk/External/SPEC/CINT2000/252.eon/Makefile Mon Feb 22 20:09:46 2010
@@ -3,7 +3,6 @@
STDOUT_FILENAME = cook_log.out
STDERR_FILENAME = cook_log.err
FP_ABSTOLERANCE := 0.005
-LINK_WITH_LLVMGCC_LIBS := 1
CPPFLAGS = -include errno.h -DHAS_ERRLIST -DUSE_STRERROR -DSPEC_STDCPP -DNDEBUG
From jyasskin at google.com Mon Feb 22 20:32:01 2010
From: jyasskin at google.com (Jeffrey Yasskin)
Date: Mon, 22 Feb 2010 21:32:01 -0500
Subject: [llvm-commits] [llvm] r96834 -
/llvm/trunk/lib/Support/GraphWriter.cpp
In-Reply-To: <20100223000453.7E04C2A6C12E@llvm.org>
References: <20100223000453.7E04C2A6C12E@llvm.org>
Message-ID:
This patch was by Collin Winter. I keep forgetting to give him credit.
On Mon, Feb 22, 2010 at 7:04 PM, Jeffrey Yasskin wrote:
> Author: jyasskin
> Date: Mon Feb 22 18:04:53 2010
> New Revision: 96834
>
> URL: http://llvm.org/viewvc/llvm-project?rev=96834&view=rev
> Log:
> Fix viewCFG on Linux.
>
> Modified:
> ? ?llvm/trunk/lib/Support/GraphWriter.cpp
>
> Modified: llvm/trunk/lib/Support/GraphWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/GraphWriter.cpp?rev=96834&r1=96833&r2=96834&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Support/GraphWriter.cpp (original)
> +++ llvm/trunk/lib/Support/GraphWriter.cpp Mon Feb 22 18:04:53 2010
> @@ -137,7 +137,7 @@
> ? ? args.clear();
> ? ? args.push_back(gv.c_str());
> ? ? args.push_back(PSFilename.c_str());
> - ? ?args.push_back("-spartan");
> + ? ?args.push_back("--spartan");
> ? ? args.push_back(0);
>
> ? ? ErrMsg.clear();
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
From gohman at apple.com Mon Feb 22 20:33:29 2010
From: gohman at apple.com (Dan Gohman)
Date: Tue, 23 Feb 2010 02:33:29 -0000
Subject: [llvm-commits] [llvm] r96871 -
/llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
Message-ID: <20100223023329.7813B2A6C12C@llvm.org>
Author: djg
Date: Mon Feb 22 20:33:29 2010
New Revision: 96871
URL: http://llvm.org/viewvc/llvm-project?rev=96871&view=rev
Log:
Revert 96854, 96852, and 96849, unbreaking test/CodeGen/CellSPU/i64ops.ll.
Modified:
llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
Modified: llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp?rev=96871&r1=96870&r2=96871&view=diff
==============================================================================
--- llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp Mon Feb 22 20:33:29 2010
@@ -294,19 +294,15 @@
((vecVT == MVT::v2i64) &&
((SPU::get_vec_i16imm(bvNode, *CurDAG, MVT::i64).getNode() != 0) ||
(SPU::get_ILHUvec_imm(bvNode, *CurDAG, MVT::i64).getNode() != 0) ||
- (SPU::get_vec_u18imm(bvNode, *CurDAG, MVT::i64).getNode() != 0)))) {
- HandleSDNode Dummy(SDValue(bvNode, 0));
- if (SDNode *N = Select(bvNode))
- return N;
- return Dummy.getValue().getNode();
- }
+ (SPU::get_vec_u18imm(bvNode, *CurDAG, MVT::i64).getNode() != 0))))
+ return Select(bvNode);
// No, need to emit a constant pool spill:
std::vector CV;
for (size_t i = 0; i < bvNode->getNumOperands(); ++i) {
ConstantSDNode *V = dyn_cast (bvNode->getOperand(i));
- CV.push_back(const_cast(V->getConstantIntValue()));
+ CV.push_back(const_cast (V->getConstantIntValue()));
}
Constant *CP = ConstantVector::get(CV);
@@ -315,15 +311,10 @@
SDValue CGPoolOffset =
SPU::LowerConstantPool(CPIdx, *CurDAG,
SPUtli.getSPUTargetMachine());
-
- HandleSDNode Dummy(CurDAG->getLoad(vecVT, dl,
- CurDAG->getEntryNode(), CGPoolOffset,
- PseudoSourceValue::getConstantPool(),0,
- false, false, Alignment));
- CurDAG->ReplaceAllUsesWith(SDValue(bvNode, 0), Dummy.getValue());
- if (SDNode *N = SelectCode(Dummy.getValue().getNode()))
- return N;
- return Dummy.getValue().getNode();
+ return SelectCode(CurDAG->getLoad(vecVT, dl,
+ CurDAG->getEntryNode(), CGPoolOffset,
+ PseudoSourceValue::getConstantPool(), 0,
+ false, false, Alignment).getNode());
}
/// Select - Convert the specified operand from a target-independent to a
@@ -701,8 +692,9 @@
SDValue Ops[8];
DebugLoc dl = N->getDebugLoc();
- if (N->isMachineOpcode())
+ if (N->isMachineOpcode()) {
return NULL; // Already selected.
+ }
if (Opc == ISD::FrameIndex) {
int FI = cast(N)->getIndex();
@@ -767,65 +759,43 @@
}
SDNode *shufMaskLoad = emitBuildVector(shufMask.getNode());
-
- HandleSDNode PromoteScalar(CurDAG->getNode(SPUISD::PREFSLOT2VEC, dl,
- Op0VecVT, Op0));
-
- SDValue PromScalar;
- if (SDNode *N = SelectCode(PromoteScalar.getValue().getNode()))
- PromScalar = SDValue(N, 0);
- else
- PromScalar = PromoteScalar.getValue();
-
+ SDNode *PromoteScalar =
+ SelectCode(CurDAG->getNode(SPUISD::PREFSLOT2VEC, dl,
+ Op0VecVT, Op0).getNode());
+
SDValue zextShuffle =
CurDAG->getNode(SPUISD::SHUFB, dl, OpVecVT,
- PromScalar, PromScalar,
+ SDValue(PromoteScalar, 0),
+ SDValue(PromoteScalar, 0),
SDValue(shufMaskLoad, 0));
- HandleSDNode Dummy2(zextShuffle);
- if (SDNode *N = SelectCode(Dummy2.getValue().getNode()))
- return N;
- HandleSDNode Dummy(CurDAG->getNode(SPUISD::VEC2PREFSLOT, dl, OpVT,
- Dummy2.getValue()));
-
- CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
- SelectCode(Dummy.getValue().getNode());
- return Dummy.getValue().getNode();
+ // N.B.: BIT_CONVERT replaces and updates the zextShuffle node, so we
+ // re-use it in the VEC2PREFSLOT selection without needing to explicitly
+ // call SelectCode (it's already done for us.)
+ SelectCode(CurDAG->getNode(ISD::BIT_CONVERT, dl, OpVecVT, zextShuffle).getNode());
+ return SelectCode(CurDAG->getNode(SPUISD::VEC2PREFSLOT, dl, OpVT,
+ zextShuffle).getNode());
} else if (Opc == ISD::ADD && (OpVT == MVT::i64 || OpVT == MVT::v2i64)) {
SDNode *CGLoad =
emitBuildVector(getCarryGenerateShufMask(*CurDAG, dl).getNode());
- HandleSDNode Dummy(CurDAG->getNode(SPUISD::ADD64_MARKER, dl, OpVT,
- N->getOperand(0), N->getOperand(1),
- SDValue(CGLoad, 0)));
-
- CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
- if (SDNode *N = SelectCode(Dummy.getValue().getNode()))
- return N;
- return Dummy.getValue().getNode();
+ return SelectCode(CurDAG->getNode(SPUISD::ADD64_MARKER, dl, OpVT,
+ N->getOperand(0), N->getOperand(1),
+ SDValue(CGLoad, 0)).getNode());
} else if (Opc == ISD::SUB && (OpVT == MVT::i64 || OpVT == MVT::v2i64)) {
SDNode *CGLoad =
emitBuildVector(getBorrowGenerateShufMask(*CurDAG, dl).getNode());
- HandleSDNode Dummy(CurDAG->getNode(SPUISD::SUB64_MARKER, dl, OpVT,
- N->getOperand(0), N->getOperand(1),
- SDValue(CGLoad, 0)));
-
- CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
- if (SDNode *N = SelectCode(Dummy.getValue().getNode()))
- return N;
- return Dummy.getValue().getNode();
+ return SelectCode(CurDAG->getNode(SPUISD::SUB64_MARKER, dl, OpVT,
+ N->getOperand(0), N->getOperand(1),
+ SDValue(CGLoad, 0)).getNode());
} else if (Opc == ISD::MUL && (OpVT == MVT::i64 || OpVT == MVT::v2i64)) {
SDNode *CGLoad =
emitBuildVector(getCarryGenerateShufMask(*CurDAG, dl).getNode());
- HandleSDNode Dummy(CurDAG->getNode(SPUISD::MUL64_MARKER, dl, OpVT,
- N->getOperand(0), N->getOperand(1),
- SDValue(CGLoad, 0)));
- CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
- if (SDNode *N = SelectCode(Dummy.getValue().getNode()))
- return N;
- return Dummy.getValue().getNode();
+ return SelectCode(CurDAG->getNode(SPUISD::MUL64_MARKER, dl, OpVT,
+ N->getOperand(0), N->getOperand(1),
+ SDValue(CGLoad, 0)).getNode());
} else if (Opc == ISD::TRUNCATE) {
SDValue Op0 = N->getOperand(0);
if ((Op0.getOpcode() == ISD::SRA || Op0.getOpcode() == ISD::SRL)
@@ -862,14 +832,17 @@
}
}
} else if (Opc == ISD::SHL) {
- if (OpVT == MVT::i64)
+ if (OpVT == MVT::i64) {
return SelectSHLi64(N, OpVT);
+ }
} else if (Opc == ISD::SRL) {
- if (OpVT == MVT::i64)
+ if (OpVT == MVT::i64) {
return SelectSRLi64(N, OpVT);
+ }
} else if (Opc == ISD::SRA) {
- if (OpVT == MVT::i64)
+ if (OpVT == MVT::i64) {
return SelectSRAi64(N, OpVT);
+ }
} else if (Opc == ISD::FNEG
&& (OpVT == MVT::f64 || OpVT == MVT::v2f64)) {
DebugLoc dl = N->getDebugLoc();
@@ -1251,15 +1224,13 @@
? shufmask.getNode()
: emitBuildVector(shufmask.getNode()));
- SDValue shufNode =
- CurDAG->getNode(SPUISD::SHUFB, dl, OpVecVT,
+ SDNode *shufNode =
+ Select(CurDAG->getNode(SPUISD::SHUFB, dl, OpVecVT,
SDValue(lhsNode, 0), SDValue(rhsNode, 0),
- SDValue(shufMaskNode, 0));
- HandleSDNode Dummy(shufNode);
- SDNode *SN = SelectCode(Dummy.getValue().getNode());
- if (SN == 0) SN = Dummy.getValue().getNode();
-
- return CurDAG->getMachineNode(SPU::ORi64_v2i64, dl, OpVT, SDValue(SN, 0));
+ SDValue(shufMaskNode, 0)).getNode());
+
+ return CurDAG->getMachineNode(SPU::ORi64_v2i64, dl, OpVT,
+ SDValue(shufNode, 0));
} else if (i64vec.getOpcode() == ISD::BUILD_VECTOR) {
return CurDAG->getMachineNode(SPU::ORi64_v2i64, dl, OpVT,
SDValue(emitBuildVector(i64vec.getNode()), 0));
From gohman at apple.com Mon Feb 22 20:44:03 2010
From: gohman at apple.com (Dan Gohman)
Date: Tue, 23 Feb 2010 02:44:03 -0000
Subject: [llvm-commits] [llvm] r96873 - /llvm/trunk/docs/LangRef.html
Message-ID: <20100223024403.759E92A6C12C@llvm.org>
Author: djg
Date: Mon Feb 22 20:44:03 2010
New Revision: 96873
URL: http://llvm.org/viewvc/llvm-project?rev=96873&view=rev
Log:
Update LangRef to match the code; pointers default to being 64-bit.
Modified:
llvm/trunk/docs/LangRef.html
Modified: llvm/trunk/docs/LangRef.html
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LangRef.html?rev=96873&r1=96872&r2=96873&view=diff
==============================================================================
--- llvm/trunk/docs/LangRef.html (original)
+++ llvm/trunk/docs/LangRef.html Mon Feb 22 20:44:03 2010
@@ -1277,7 +1277,7 @@
- E - big endian
- - p:32:64:64 - 32-bit pointers with 64-bit alignment
+ - p:64:64:64 - 64-bit pointers with 64-bit alignment
- i1:8:8 - i1 is 8-bit (byte) aligned
- i8:8:8 - i8 is 8-bit (byte) aligned
- i16:16:16 - i16 is 16-bit aligned
From daniel at zuster.org Mon Feb 22 21:20:27 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 03:20:27 -0000
Subject: [llvm-commits] [test-suite] r96878 -
/test-suite/trunk/SingleSource/Regression/C/2003-05-21-UnionBitfields.c
Message-ID: <20100223032027.D70BB2A6C12C@llvm.org>
Author: ddunbar
Date: Mon Feb 22 21:20:27 2010
New Revision: 96878
URL: http://llvm.org/viewvc/llvm-project?rev=96878&view=rev
Log:
Rewrite test in a C99 compliant way.
Modified:
test-suite/trunk/SingleSource/Regression/C/2003-05-21-UnionBitfields.c
Modified: test-suite/trunk/SingleSource/Regression/C/2003-05-21-UnionBitfields.c
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/Regression/C/2003-05-21-UnionBitfields.c?rev=96878&r1=96877&r2=96878&view=diff
==============================================================================
--- test-suite/trunk/SingleSource/Regression/C/2003-05-21-UnionBitfields.c (original)
+++ test-suite/trunk/SingleSource/Regression/C/2003-05-21-UnionBitfields.c Mon Feb 22 21:20:27 2010
@@ -17,6 +17,6 @@
}
int main() {
- printf("%d %d\n", target_isinf(1234.42), target_isinf(1.0/1.0e-1000));
+ printf("%d %d\n", target_isinf(1234.42), target_isinf(1.0/5.0e-324));
return 0;
}
From alenhar2 at llvm.org Mon Feb 22 11:02:53 2010
From: alenhar2 at llvm.org (alenhar2 at llvm.org)
Date: Mon, 22 Feb 2010 17:02:53 -0000
Subject: [llvm-commits] [poolalloc] r96786 - in /poolalloc/trunk/lib/DSA:
DataStructure.cpp Local.cpp
Message-ID: <20100222170253.B15F12A6C124@llvm.org>
Author: alenhar2
Date: Mon Feb 22 11:02:53 2010
New Revision: 96786
URL: http://llvm.org/viewvc/llvm-project?rev=96786&view=rev
Log:
remove DOUT
Modified:
poolalloc/trunk/lib/DSA/DataStructure.cpp
poolalloc/trunk/lib/DSA/Local.cpp
Modified: poolalloc/trunk/lib/DSA/DataStructure.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/DataStructure.cpp?rev=96786&r1=96785&r2=96786&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/DataStructure.cpp (original)
+++ poolalloc/trunk/lib/DSA/DataStructure.cpp Mon Feb 22 11:02:53 2010
@@ -150,7 +150,7 @@
//
// Remove all references to this node from the Pool Descriptor Map.
//
- DOUT << "LLVA: Removing " << this << "\n";
+ DEBUG(errs() << "LLVA: Removing " << this << "\n");
if (ParentGraph) {
hash_map &pdm=ParentGraph->getPoolDescriptorsMap();
pdm.erase (this);
@@ -609,7 +609,7 @@
// try merge with NewTy: struct {t1, t2, stuff...} if offset lands exactly
// on a field in Ty
if (isa(NewTy) && isa(Ty)) {
- DOUT << "Ty: " << *Ty << "\nNewTy: " << *NewTy << "@" << Offset << "\n";
+ DEBUG(errs() << "Ty: " << *Ty << "\nNewTy: " << *NewTy << "@" << Offset << "\n");
const StructType *STy = cast(Ty);
const StructLayout &SL = *TD.getStructLayout(STy);
unsigned i = SL.getElementContainingOffset(Offset);
@@ -625,7 +625,7 @@
nt.insert(nt.end(), STy->element_begin(), STy->element_end());
//and merge
STy = StructType::get(STy->getContext(), nt);
- DOUT << "Trying with: " << *STy << "\n";
+ DEBUG(errs() << "Trying with: " << *STy << "\n");
return mergeTypeInfo(STy, 0);
}
@@ -634,7 +634,7 @@
//try merge with NewTy: struct : {t1, t2, T} if offset lands on a field
//in Ty
if (isa(Ty)) {
- DOUT << "Ty: " << *Ty << "\nNewTy: " << *NewTy << "@" << Offset << "\n";
+ DEBUG(errs() << "Ty: " << *Ty << "\nNewTy: " << *NewTy << "@" << Offset << "\n");
const StructType *STy = cast(Ty);
const StructLayout &SL = *TD.getStructLayout(STy);
unsigned i = SL.getElementContainingOffset(Offset);
@@ -649,7 +649,7 @@
nt.push_back(NewTy);
//and merge
STy = StructType::get(STy->getContext(), nt);
- DOUT << "Trying with: " << *STy << "\n";
+ DEBUG(errs() << "Trying with: " << *STy << "\n");
return mergeTypeInfo(STy, 0);
}
@@ -813,7 +813,7 @@
if (getParentGraph()->retnodes_begin() != getParentGraph()->retnodes_end())
M = getParentGraph()->retnodes_begin()->first->getParent();
- DOUT << "MergeTypeInfo Folding OrigTy: ";
+ DEBUG(errs() << "MergeTypeInfo Folding OrigTy: ");
raw_stderr_ostream stream;
DEBUG(WriteTypeSymbolic(stream, Ty, M);
stream << "\n due to:";
@@ -909,7 +909,7 @@
//do nothing (common case)
} else {
if (pdm[NNode]) {
- DOUT << "LLVA: 1: currNode (" << currNode << ") becomes " << pdm[NNode]->getName() << "(" << NNode << ")\n";
+ DEBUG(errs() << "LLVA: 1: currNode (" << currNode << ") becomes " << pdm[NNode]->getName() << "(" << NNode << ")\n");
pdm[currNode] = pdm[NNode];
}
}
@@ -921,9 +921,9 @@
// Verify that this is correct. I believe it is; it seems to make sense
// since either node can be used after the merge.
//
- DOUT << "LLVA: MergeNodes: currnode has something, newnode has nothing\n";
- DOUT << "LLVA: 2: currNode (" << currNode << ") becomes "
- << "(" << NNode << ")\n";
+ DEBUG(errs() << "LLVA: MergeNodes: currnode has something, newnode has nothing\n"
+ << "LLVA: 2: currNode (" << currNode << ") becomes "
+ << "(" << NNode << ")\n");
pdm[NNode] = pdm[currNode];
#endif
//do nothing
@@ -1046,7 +1046,7 @@
if (N == this) {
// We cannot merge two pieces of the same node together, collapse the node
// completely.
- DOUT << "Attempting to merge two chunks of the same node together!\n";
+ DEBUG(errs() << "Attempting to merge two chunks of the same node together!\n");
foldNodeCompletely();
return;
}
@@ -1305,7 +1305,7 @@
//do nothing (common case)
} else {
if (srcpdm[SN]) {
- DOUT << "DN becomes " << srcpdm[SN]->getName() << std::endl;
+ DEBUG(errs() << "DN becomes " << srcpdm[SN]->getName() << std::endl);
destpdm[DN] = srcpdm[SN];
}
}
@@ -2085,7 +2085,7 @@
// eliminate it.
if (Callee->getNumReferrers() == 1 && Callee->isCompleteNode() &&
Callee->isEmptyGlobals()) { // No useful info?
- DOUT << "WARNING: Useless call site found.\n";
+ DEBUG(errs() << "WARNING: Useless call site found.\n");
Calls.erase(OldIt);
++NumDeleted;
continue;
@@ -2194,7 +2194,7 @@
// If this call site is now the same as the previous one, we can delete it
// as a duplicate.
if (*OldIt == *CI) {
- DOUT << "Deleteing " << CI->getCallSite().getInstruction() << "\n";
+ DEBUG(errs() << "Deleteing " << CI->getCallSite().getInstruction() << "\n");
Calls.erase(CI);
CI = OldIt;
++NumDeleted;
@@ -2207,7 +2207,7 @@
NumCallNodesMerged += NumDeleted;
if (NumDeleted)
- DOUT << "Merged " << NumDeleted << " call nodes.\n";
+ DEBUG(errs() << "Merged " << NumDeleted << " call nodes.\n");
}
@@ -2532,7 +2532,7 @@
#if 0
if (CS.getNumPtrArgs() && CS.getCalleeNode() == CS.getPtrArg(0).getNode() &&
CS.getCalleeNode() && CS.getCalleeNode()->getGlobals().empty())
- DOUT << "WARNING: WEIRD CALL SITE FOUND!\n";
+ DEBUG(errs() << "WARNING: WEIRD CALL SITE FOUND!\n");
#endif
}
AssertNodeInGraph(CS.getRetVal().getNode());
@@ -2805,7 +2805,7 @@
std::set ECGlobals;
buildGlobalECs(ECGlobals);
if (!ECGlobals.empty()) {
- DOUT << "Eliminating " << ECGlobals.size() << " EC Globals!\n";
+ DEBUG(errs() << "Eliminating " << ECGlobals.size() << " EC Globals!\n");
for (DSInfoTy::iterator I = DSInfo.begin(),
E = DSInfo.end(); I != E; ++I)
eliminateUsesOfECGlobals(*I->second, ECGlobals);
Modified: poolalloc/trunk/lib/DSA/Local.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/Local.cpp?rev=96786&r1=96785&r2=96786&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/Local.cpp (original)
+++ poolalloc/trunk/lib/DSA/Local.cpp Mon Feb 22 11:02:53 2010
@@ -837,7 +837,7 @@
DSNodeHandle NewNH(NHN, NH.getOffset()+(unsigned)SL->getElementOffset(i));
MergeConstantInitIntoNode(NewNH, cast(Ty)->getElementType(i), cast(CS->getOperand(i)));
} else if (SL->getElementOffset(i) == SL->getSizeInBytes()) {
- DOUT << "Zero size element at end of struct\n";
+ DEBUG(errs() << "Zero size element at end of struct\n" );
NHN->foldNodeCompletely();
} else {
assert(0 && "type was smaller than offsets of of struct layout indicate");
From llvm at llvm.org Mon Feb 22 19:47:21 2010
From: llvm at llvm.org (llvm at llvm.org)
Date: Tue, 23 Feb 2010 01:47:21 -0000
Subject: [llvm-commits] [www] r96857 - /www/trunk/header.incl
Message-ID: <20100223014721.39DB22A6C12C@llvm.org>
Author: llvm
Date: Mon Feb 22 19:47:21 2010
New Revision: 96857
URL: http://llvm.org/viewvc/llvm-project?rev=96857&view=rev
Log:
Remove nightly tester link.
Modified:
www/trunk/header.incl
Modified: www/trunk/header.incl
URL: http://llvm.org/viewvc/llvm-project/www/trunk/header.incl?rev=96857&r1=96856&r2=96857&view=diff
==============================================================================
--- www/trunk/header.incl (original)
+++ www/trunk/header.incl Mon Feb 22 19:47:21 2010
@@ -127,7 +127,7 @@
Dev. Resources:
doxygen
ViewVC
- Nightly Tester
+
LLVM Bugzilla
Buildbot
From alenhar2 at llvm.org Mon Feb 22 22:07:38 2010
From: alenhar2 at llvm.org (alenhar2 at llvm.org)
Date: Tue, 23 Feb 2010 04:07:38 -0000
Subject: [llvm-commits] [poolalloc] r96882 -
/poolalloc/trunk/lib/DSA/Local.cpp
Message-ID: <20100223040738.979EC2A6C12C@llvm.org>
Author: alenhar2
Date: Mon Feb 22 22:07:38 2010
New Revision: 96882
URL: http://llvm.org/viewvc/llvm-project?rev=96882&view=rev
Log:
Only track address taken functions
Modified:
poolalloc/trunk/lib/DSA/Local.cpp
Modified: poolalloc/trunk/lib/DSA/Local.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/Local.cpp?rev=96882&r1=96881&r2=96882&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/Local.cpp (original)
+++ poolalloc/trunk/lib/DSA/Local.cpp Mon Feb 22 22:07:38 2010
@@ -873,7 +873,7 @@
GGB.mergeInGlobalInitializer(I);
// Add Functions to the globals graph.
for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
- if (!I->isDeclaration())
+ if (!I->isDeclaration() && I->hasAddressTaken())
GGB.mergeFunction(*I);
}
From sabre at nondot.org Mon Feb 22 23:30:43 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 05:30:43 -0000
Subject: [llvm-commits] [llvm] r96885 -
/llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
Message-ID: <20100223053043.CD75F2A6C12C@llvm.org>
Author: lattner
Date: Mon Feb 22 23:30:43 2010
New Revision: 96885
URL: http://llvm.org/viewvc/llvm-project?rev=96885&view=rev
Log:
reapply my cellspu changes with a fix to not break the old isel.
Modified:
llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
Modified: llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp?rev=96885&r1=96884&r2=96885&view=diff
==============================================================================
--- llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/CellSPU/SPUISelDAGToDAG.cpp Mon Feb 22 23:30:43 2010
@@ -294,15 +294,19 @@
((vecVT == MVT::v2i64) &&
((SPU::get_vec_i16imm(bvNode, *CurDAG, MVT::i64).getNode() != 0) ||
(SPU::get_ILHUvec_imm(bvNode, *CurDAG, MVT::i64).getNode() != 0) ||
- (SPU::get_vec_u18imm(bvNode, *CurDAG, MVT::i64).getNode() != 0))))
- return Select(bvNode);
+ (SPU::get_vec_u18imm(bvNode, *CurDAG, MVT::i64).getNode() != 0)))) {
+ HandleSDNode Dummy(SDValue(bvNode, 0));
+ if (SDNode *N = Select(bvNode))
+ return N;
+ return Dummy.getValue().getNode();
+ }
// No, need to emit a constant pool spill:
std::vector CV;
for (size_t i = 0; i < bvNode->getNumOperands(); ++i) {
ConstantSDNode *V = dyn_cast (bvNode->getOperand(i));
- CV.push_back(const_cast (V->getConstantIntValue()));
+ CV.push_back(const_cast(V->getConstantIntValue()));
}
Constant *CP = ConstantVector::get(CV);
@@ -311,10 +315,15 @@
SDValue CGPoolOffset =
SPU::LowerConstantPool(CPIdx, *CurDAG,
SPUtli.getSPUTargetMachine());
- return SelectCode(CurDAG->getLoad(vecVT, dl,
- CurDAG->getEntryNode(), CGPoolOffset,
- PseudoSourceValue::getConstantPool(), 0,
- false, false, Alignment).getNode());
+
+ HandleSDNode Dummy(CurDAG->getLoad(vecVT, dl,
+ CurDAG->getEntryNode(), CGPoolOffset,
+ PseudoSourceValue::getConstantPool(),0,
+ false, false, Alignment));
+ CurDAG->ReplaceAllUsesWith(SDValue(bvNode, 0), Dummy.getValue());
+ if (SDNode *N = SelectCode(Dummy.getValue().getNode()))
+ return N;
+ return Dummy.getValue().getNode();
}
/// Select - Convert the specified operand from a target-independent to a
@@ -692,9 +701,8 @@
SDValue Ops[8];
DebugLoc dl = N->getDebugLoc();
- if (N->isMachineOpcode()) {
+ if (N->isMachineOpcode())
return NULL; // Already selected.
- }
if (Opc == ISD::FrameIndex) {
int FI = cast(N)->getIndex();
@@ -759,43 +767,67 @@
}
SDNode *shufMaskLoad = emitBuildVector(shufMask.getNode());
- SDNode *PromoteScalar =
- SelectCode(CurDAG->getNode(SPUISD::PREFSLOT2VEC, dl,
- Op0VecVT, Op0).getNode());
-
+
+ HandleSDNode PromoteScalar(CurDAG->getNode(SPUISD::PREFSLOT2VEC, dl,
+ Op0VecVT, Op0));
+
+ SDValue PromScalar;
+ if (SDNode *N = SelectCode(PromoteScalar.getValue().getNode()))
+ PromScalar = SDValue(N, 0);
+ else
+ PromScalar = PromoteScalar.getValue();
+
SDValue zextShuffle =
CurDAG->getNode(SPUISD::SHUFB, dl, OpVecVT,
- SDValue(PromoteScalar, 0),
- SDValue(PromoteScalar, 0),
+ PromScalar, PromScalar,
SDValue(shufMaskLoad, 0));
- // N.B.: BIT_CONVERT replaces and updates the zextShuffle node, so we
- // re-use it in the VEC2PREFSLOT selection without needing to explicitly
- // call SelectCode (it's already done for us.)
- SelectCode(CurDAG->getNode(ISD::BIT_CONVERT, dl, OpVecVT, zextShuffle).getNode());
- return SelectCode(CurDAG->getNode(SPUISD::VEC2PREFSLOT, dl, OpVT,
- zextShuffle).getNode());
+ HandleSDNode Dummy2(zextShuffle);
+ if (SDNode *N = SelectCode(Dummy2.getValue().getNode()))
+ zextShuffle = SDValue(N, 0);
+ else
+ zextShuffle = Dummy2.getValue();
+ HandleSDNode Dummy(CurDAG->getNode(SPUISD::VEC2PREFSLOT, dl, OpVT,
+ zextShuffle));
+
+ CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
+ SelectCode(Dummy.getValue().getNode());
+ return Dummy.getValue().getNode();
} else if (Opc == ISD::ADD && (OpVT == MVT::i64 || OpVT == MVT::v2i64)) {
SDNode *CGLoad =
emitBuildVector(getCarryGenerateShufMask(*CurDAG, dl).getNode());
- return SelectCode(CurDAG->getNode(SPUISD::ADD64_MARKER, dl, OpVT,
- N->getOperand(0), N->getOperand(1),
- SDValue(CGLoad, 0)).getNode());
+ HandleSDNode Dummy(CurDAG->getNode(SPUISD::ADD64_MARKER, dl, OpVT,
+ N->getOperand(0), N->getOperand(1),
+ SDValue(CGLoad, 0)));
+
+ CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
+ if (SDNode *N = SelectCode(Dummy.getValue().getNode()))
+ return N;
+ return Dummy.getValue().getNode();
} else if (Opc == ISD::SUB && (OpVT == MVT::i64 || OpVT == MVT::v2i64)) {
SDNode *CGLoad =
emitBuildVector(getBorrowGenerateShufMask(*CurDAG, dl).getNode());
- return SelectCode(CurDAG->getNode(SPUISD::SUB64_MARKER, dl, OpVT,
- N->getOperand(0), N->getOperand(1),
- SDValue(CGLoad, 0)).getNode());
+ HandleSDNode Dummy(CurDAG->getNode(SPUISD::SUB64_MARKER, dl, OpVT,
+ N->getOperand(0), N->getOperand(1),
+ SDValue(CGLoad, 0)));
+
+ CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
+ if (SDNode *N = SelectCode(Dummy.getValue().getNode()))
+ return N;
+ return Dummy.getValue().getNode();
} else if (Opc == ISD::MUL && (OpVT == MVT::i64 || OpVT == MVT::v2i64)) {
SDNode *CGLoad =
emitBuildVector(getCarryGenerateShufMask(*CurDAG, dl).getNode());
- return SelectCode(CurDAG->getNode(SPUISD::MUL64_MARKER, dl, OpVT,
- N->getOperand(0), N->getOperand(1),
- SDValue(CGLoad, 0)).getNode());
+ HandleSDNode Dummy(CurDAG->getNode(SPUISD::MUL64_MARKER, dl, OpVT,
+ N->getOperand(0), N->getOperand(1),
+ SDValue(CGLoad, 0)));
+ CurDAG->ReplaceAllUsesWith(N, Dummy.getValue().getNode());
+ if (SDNode *N = SelectCode(Dummy.getValue().getNode()))
+ return N;
+ return Dummy.getValue().getNode();
} else if (Opc == ISD::TRUNCATE) {
SDValue Op0 = N->getOperand(0);
if ((Op0.getOpcode() == ISD::SRA || Op0.getOpcode() == ISD::SRL)
@@ -832,17 +864,14 @@
}
}
} else if (Opc == ISD::SHL) {
- if (OpVT == MVT::i64) {
+ if (OpVT == MVT::i64)
return SelectSHLi64(N, OpVT);
- }
} else if (Opc == ISD::SRL) {
- if (OpVT == MVT::i64) {
+ if (OpVT == MVT::i64)
return SelectSRLi64(N, OpVT);
- }
} else if (Opc == ISD::SRA) {
- if (OpVT == MVT::i64) {
+ if (OpVT == MVT::i64)
return SelectSRAi64(N, OpVT);
- }
} else if (Opc == ISD::FNEG
&& (OpVT == MVT::f64 || OpVT == MVT::v2f64)) {
DebugLoc dl = N->getDebugLoc();
@@ -1224,13 +1253,15 @@
? shufmask.getNode()
: emitBuildVector(shufmask.getNode()));
- SDNode *shufNode =
- Select(CurDAG->getNode(SPUISD::SHUFB, dl, OpVecVT,
+ SDValue shufNode =
+ CurDAG->getNode(SPUISD::SHUFB, dl, OpVecVT,
SDValue(lhsNode, 0), SDValue(rhsNode, 0),
- SDValue(shufMaskNode, 0)).getNode());
-
- return CurDAG->getMachineNode(SPU::ORi64_v2i64, dl, OpVT,
- SDValue(shufNode, 0));
+ SDValue(shufMaskNode, 0));
+ HandleSDNode Dummy(shufNode);
+ SDNode *SN = SelectCode(Dummy.getValue().getNode());
+ if (SN == 0) SN = Dummy.getValue().getNode();
+
+ return CurDAG->getMachineNode(SPU::ORi64_v2i64, dl, OpVT, SDValue(SN, 0));
} else if (i64vec.getOpcode() == ISD::BUILD_VECTOR) {
return CurDAG->getMachineNode(SPU::ORi64_v2i64, dl, OpVT,
SDValue(emitBuildVector(i64vec.getNode()), 0));
From daniel at zuster.org Mon Feb 22 23:33:42 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 05:33:42 -0000
Subject: [llvm-commits] [test-suite] r96886 - in /test-suite/trunk:
Makefile.rules Makefile.tests TEST.dbgopt.Makefile
Message-ID: <20100223053342.D6F2D2A6C12C@llvm.org>
Author: ddunbar
Date: Mon Feb 22 23:33:42 2010
New Revision: 96886
URL: http://llvm.org/viewvc/llvm-project?rev=96886&view=rev
Log:
Introduce L{CC,CXX} replacements for LLVM{GCC,GXX}.
Modified:
test-suite/trunk/Makefile.rules
test-suite/trunk/Makefile.tests
test-suite/trunk/TEST.dbgopt.Makefile
Modified: test-suite/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.rules?rev=96886&r1=96885&r2=96886&view=diff
==============================================================================
--- test-suite/trunk/Makefile.rules (original)
+++ test-suite/trunk/Makefile.rules Mon Feb 22 23:33:42 2010
@@ -271,6 +271,9 @@
LBUGPOINT = $(LLVMTOOLCURRENT)/bugpoint$(EXEEXT)
LFINDMISOPT= $(LLVM_SRC_ROOT)/utils/findmisopt
+LCC := $(LLVMGCC)
+LCXX := $(LLVMGXX)
+LCC_PROGRAMS := $(LCC) $(LCXX) $(LLVMCC1) $(LLVMCC1PLUS)
###########################################################################
@@ -597,7 +600,7 @@
# Rules for building libraries
#--------------------------------------------------------------------
-LinkBCLib := $(LLVMGCC) -shared -nostdlib
+LinkBCLib := $(LCC) -shared -nostdlib
ifdef EXPORTED_SYMBOL_LIST
LinkBCLib += -Xlinker -internalize-public-api-list=$(EXPORTED_SYMBOL_LIST)
else
@@ -793,8 +796,6 @@
endif
-LCC_PROGRAMS := $(LLVMCC1) $(LLVMCC1PLUS)
-
#---------------------------------------------------------
.PRECIOUS: $(PROJ_OBJ_DIR)/Depend/.dir $(PROJ_OBJ_DIR)/BytecodeObj/.dir
.PRECIOUS: $(PROJ_OBJ_DIR)/Debug/.dir $(PROJ_OBJ_DIR)/Release/.dir
@@ -820,10 +821,10 @@
$(CompileCG) $< -o $@
$(PROJ_OBJ_DIR)/BytecodeObj/%.bc: %.cpp $(PROJ_OBJ_DIR)/BytecodeObj/.dir $(LCC_PROGRAMS)
- $(LLVMGXX) $(CPPFLAGS) -c $< -o $@
+ $(LCXX) $(CPPFLAGS) -c $< -o $@
$(PROJ_OBJ_DIR)/BytecodeObj/%.bc: %.c $(PROJ_OBJ_DIR)/BytecodeObj/.dir $(LCC_PROGRAMS)
- $(LLVMGCC) $(CPPFLAGS) -c $< -o $@
+ $(LCC) $(CPPFLAGS) -c $< -o $@
$(PROJ_OBJ_DIR)/BytecodeObj/%.bc: %.ll $(PROJ_OBJ_DIR)/BytecodeObj/.dir $(LLVMAS)
$(LLVMAS) $< -o $@
@@ -951,3 +952,11 @@
endif
endif # ifndef DISABLE_AUTO_DEPENDENCIES
+
+###
+# Debugging
+
+# General debugging rule, use 'make dbg-print-XXX' to print the
+# definition, value and origin of XXX.
+make-print-%:
+ $(error PRINT: $(value $*) = "$($*)" (from $(origin $*)))
Modified: test-suite/trunk/Makefile.tests
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/Makefile.tests?rev=96886&r1=96885&r2=96886&view=diff
==============================================================================
--- test-suite/trunk/Makefile.tests (original)
+++ test-suite/trunk/Makefile.tests Mon Feb 22 23:33:42 2010
@@ -39,27 +39,27 @@
# Compile from X.c to Output/X.bc
Output/%.bc: %.c $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
- -$(LLVMGCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
+ -$(LCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
# Compile from X.cpp to Output/X.bc
Output/%.bc: %.cpp $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
- -$(LLVMGXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
+ -$(LCXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
# Compile from X.cc to Output/X.bc
Output/%.bc: %.cc $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
- -$(LLVMGXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
+ -$(LCXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
# Compile from X.C to Output/X.bc
Output/%.bc: %.C $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
- -$(LLVMGXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
+ -$(LCXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
# Compile from X.m to Output/X.bc
Output/%.bc: %.m $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
- -$(LLVMGCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
+ -$(LCC) $(CPPFLAGS) $(CFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
# Compile from X.mm to Output/X.bc
Output/%.bc: %.mm $(LCC_PROGRAMS) Output/.dir $(INCLUDES)
- -$(LLVMGXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
+ -$(LCXX) $(CPPFLAGS) $(CXXFLAGS) $(LOPTFLAGS) $(TARGET_FLAGS) -c $< -o $@ -emit-llvm
# LLVM Assemble from X.ll to Output/X.bc. Because we are coming directly from
# LLVM source, use the non-transforming assembler.
Modified: test-suite/trunk/TEST.dbgopt.Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/TEST.dbgopt.Makefile?rev=96886&r1=96885&r2=96886&view=diff
==============================================================================
--- test-suite/trunk/TEST.dbgopt.Makefile (original)
+++ test-suite/trunk/TEST.dbgopt.Makefile Mon Feb 22 23:33:42 2010
@@ -17,8 +17,8 @@
$(PROGRAMS_TO_TEST:%=test.$(TEST).%): \
test.$(TEST).%: Output/%.diff
-Output/%.diff: %.cpp Output/.dir $(LLVMGXX) $(LOPT) $(LDIS)
- $(LLVMGXX) $*.cpp -g --emit-llvm -c -o Output/$*.bc
+Output/%.diff: %.cpp Output/.dir $(LCC_PROGRAMS) $(LOPT) $(LDIS)
+ $(LCXX) $*.cpp -g --emit-llvm -c -o Output/$*.bc
$(LOPT) Output/$*.bc -strip-nondebug -strip-debug | $(LOPT) -std-compile-opts | $(LOPT) -strip -f -o Output/$*.t.bc
$(LDIS) Output/$*.t.bc -f -o Output/$*.first.ll
$(LOPT) Output/$*.bc -strip-nondebug | $(LOPT) -std-compile-opts | $(LOPT) -strip-debug -strip -f -o Output/$*.t.bc
@@ -30,8 +30,8 @@
fi
-Output/%.diff: %.c Output/.dir $(LLVMGCC) $(LOPT) $(LDIS)
- $(LLVMGCC) $*.c -g --emit-llvm -c -o Output/$*.bc
+Output/%.diff: %.c Output/.dir $(LCC_PROGRAMS) $(LOPT) $(LDIS)
+ $(LCC) $*.c -g --emit-llvm -c -o Output/$*.bc
$(LOPT) Output/$*.bc -strip-nondebug -strip-debug | $(LOPT) -std-compile-opts | $(LOPT) -strip -f -o Output/$*.t.bc
$(LDIS) Output/$*.t.bc -f -o Output/$*.first.ll
$(LOPT) Output/$*.bc -strip-nondebug | $(LOPT) -std-compile-opts | $(LOPT) -strip-debug -strip -f -o Output/$*.t.bc
From daniel at zuster.org Mon Feb 22 23:33:45 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 05:33:45 -0000
Subject: [llvm-commits] [test-suite] r96887 -
/test-suite/trunk/External/SPEC/CINT95/Makefile
Message-ID: <20100223053345.8B3392A6C12D@llvm.org>
Author: ddunbar
Date: Mon Feb 22 23:33:45 2010
New Revision: 96887
URL: http://llvm.org/viewvc/llvm-project?rev=96887&view=rev
Log:
Make sure to include Makefile.config before using ARCH.
Modified:
test-suite/trunk/External/SPEC/CINT95/Makefile
Modified: test-suite/trunk/External/SPEC/CINT95/Makefile
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/External/SPEC/CINT95/Makefile?rev=96887&r1=96886&r2=96887&view=diff
==============================================================================
--- test-suite/trunk/External/SPEC/CINT95/Makefile (original)
+++ test-suite/trunk/External/SPEC/CINT95/Makefile Mon Feb 22 23:33:45 2010
@@ -9,6 +9,9 @@
134.perl \
147.vortex
+# Get the $(ARCH) setting
+include $(LEVEL)/Makefile.config
+
ifeq ($(ARCH),x86_64)
PARALLEL_DIRS := $(filter-out 126.gcc, $(PARALLEL_DIRS))
PARALLEL_DIRS := $(filter-out 147.vortex, $(PARALLEL_DIRS))
From sabre at nondot.org Mon Feb 22 23:51:07 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 05:51:07 -0000
Subject: [llvm-commits] [llvm] r96889 -
/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
Message-ID: <20100223055107.8678D2A6C12C@llvm.org>
Author: lattner
Date: Mon Feb 22 23:51:07 2010
New Revision: 96889
URL: http://llvm.org/viewvc/llvm-project?rev=96889&view=rev
Log:
reduce indentation by eliminating 'else after return'
Modified:
llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp?rev=96889&r1=96888&r2=96889&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp Mon Feb 22 23:51:07 2010
@@ -956,19 +956,25 @@
MadeChange |= UpdateNodeType(MVT::isVoid, TP);
}
return MadeChange;
- } else if (getOperator()->getName() == "implicit" ||
- getOperator()->getName() == "parallel") {
+ }
+
+ if (getOperator()->getName() == "implicit" ||
+ getOperator()->getName() == "parallel") {
bool MadeChange = false;
for (unsigned i = 0; i < getNumChildren(); ++i)
MadeChange = getChild(i)->ApplyTypeConstraints(TP, NotRegisters);
MadeChange |= UpdateNodeType(MVT::isVoid, TP);
return MadeChange;
- } else if (getOperator()->getName() == "COPY_TO_REGCLASS") {
+ }
+
+ if (getOperator()->getName() == "COPY_TO_REGCLASS") {
bool MadeChange = false;
MadeChange |= getChild(0)->ApplyTypeConstraints(TP, NotRegisters);
MadeChange |= getChild(1)->ApplyTypeConstraints(TP, NotRegisters);
return MadeChange;
- } else if (const CodeGenIntrinsic *Int = getIntrinsicInfo(CDP)) {
+ }
+
+ if (const CodeGenIntrinsic *Int = getIntrinsicInfo(CDP)) {
bool MadeChange = false;
// Apply the result type to the node.
@@ -992,7 +998,9 @@
MadeChange |= getChild(i)->ApplyTypeConstraints(TP, NotRegisters);
}
return MadeChange;
- } else if (getOperator()->isSubClassOf("SDNode")) {
+ }
+
+ if (getOperator()->isSubClassOf("SDNode")) {
const SDNodeInfo &NI = CDP.getSDNodeInfo(getOperator());
bool MadeChange = NI.ApplyTypeConstraints(this, TP);
@@ -1004,7 +1012,9 @@
MadeChange |= UpdateNodeType(MVT::isVoid, TP);
return MadeChange;
- } else if (getOperator()->isSubClassOf("Instruction")) {
+ }
+
+ if (getOperator()->isSubClassOf("Instruction")) {
const DAGInstruction &Inst = CDP.getInstruction(getOperator());
bool MadeChange = false;
unsigned NumResults = Inst.getNumResults();
@@ -1080,24 +1090,24 @@
"' was provided too many operands!");
return MadeChange;
- } else {
- assert(getOperator()->isSubClassOf("SDNodeXForm") && "Unknown node type!");
-
- // Node transforms always take one operand.
- if (getNumChildren() != 1)
- TP.error("Node transform '" + getOperator()->getName() +
- "' requires one operand!");
-
- // If either the output or input of the xform does not have exact
- // type info. We assume they must be the same. Otherwise, it is perfectly
- // legal to transform from one type to a completely different type.
- if (!hasTypeSet() || !getChild(0)->hasTypeSet()) {
- bool MadeChange = UpdateNodeType(getChild(0)->getExtTypes(), TP);
- MadeChange |= getChild(0)->UpdateNodeType(getExtTypes(), TP);
- return MadeChange;
- }
- return false;
}
+
+ assert(getOperator()->isSubClassOf("SDNodeXForm") && "Unknown node type!");
+
+ // Node transforms always take one operand.
+ if (getNumChildren() != 1)
+ TP.error("Node transform '" + getOperator()->getName() +
+ "' requires one operand!");
+
+ // If either the output or input of the xform does not have exact
+ // type info. We assume they must be the same. Otherwise, it is perfectly
+ // legal to transform from one type to a completely different type.
+ if (!hasTypeSet() || !getChild(0)->hasTypeSet()) {
+ bool MadeChange = UpdateNodeType(getChild(0)->getExtTypes(), TP);
+ MadeChange |= getChild(0)->UpdateNodeType(getExtTypes(), TP);
+ return MadeChange;
+ }
+ return false;
}
/// OnlyOnRHSOfCommutative - Return true if this value is only allowed on the
From bob.wilson at apple.com Mon Feb 22 23:55:00 2010
From: bob.wilson at apple.com (Bob Wilson)
Date: Tue, 23 Feb 2010 05:55:00 -0000
Subject: [llvm-commits] [llvm] r96890 -
/llvm/trunk/lib/Transforms/Scalar/GVN.cpp
Message-ID: <20100223055500.CBF142A6C12C@llvm.org>
Author: bwilson
Date: Mon Feb 22 23:55:00 2010
New Revision: 96890
URL: http://llvm.org/viewvc/llvm-project?rev=96890&view=rev
Log:
Update memdep when load PRE inserts a new load, and add some debug output.
I don't have a small testcase for this.
Modified:
llvm/trunk/lib/Transforms/Scalar/GVN.cpp
Modified: llvm/trunk/lib/Transforms/Scalar/GVN.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GVN.cpp?rev=96890&r1=96889&r2=96890&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/GVN.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/GVN.cpp Mon Feb 22 23:55:00 2010
@@ -1707,6 +1707,8 @@
// Add the newly created load.
ValuesPerBlock.push_back(AvailableValueInBlock::get(UnavailablePred,
NewLoad));
+ MD->invalidateCachedPointerInfo(LoadPtr);
+ DEBUG(dbgs() << "GVN INSERTED " << *NewLoad << '\n');
}
// Perform PHI construction.
From sabre at nondot.org Mon Feb 22 23:59:11 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 05:59:11 -0000
Subject: [llvm-commits] [llvm] r96891 -
/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
Message-ID: <20100223055911.226042A6C12C@llvm.org>
Author: lattner
Date: Mon Feb 22 23:59:10 2010
New Revision: 96891
URL: http://llvm.org/viewvc/llvm-project?rev=96891&view=rev
Log:
more tidying up
Modified:
llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp?rev=96891&r1=96890&r2=96891&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp Mon Feb 22 23:59:10 2010
@@ -1579,10 +1579,10 @@
if (TPN->ContainsUnresolvedType()) {
if (iter == 0)
throw "Value #" + utostr(i) + " of PredicateOperand '" +
- DefaultOps[iter][i]->getName() + "' doesn't have a concrete type!";
+ DefaultOps[iter][i]->getName() +"' doesn't have a concrete type!";
else
throw "Value #" + utostr(i) + " of OptionalDefOperand '" +
- DefaultOps[iter][i]->getName() + "' doesn't have a concrete type!";
+ DefaultOps[iter][i]->getName() +"' doesn't have a concrete type!";
}
DefaultOpInfo.DefaultOps.push_back(TPN);
}
@@ -1626,21 +1626,21 @@
TreePatternNode *&Slot = InstInputs[Pat->getName()];
if (!Slot) {
Slot = Pat;
+ return true;
+ }
+ Record *SlotRec;
+ if (Slot->isLeaf()) {
+ SlotRec = dynamic_cast(Slot->getLeafValue())->getDef();
} else {
- Record *SlotRec;
- if (Slot->isLeaf()) {
- SlotRec = dynamic_cast(Slot->getLeafValue())->getDef();
- } else {
- assert(Slot->getNumChildren() == 0 && "can't be a use with children!");
- SlotRec = Slot->getOperator();
- }
-
- // Ensure that the inputs agree if we've already seen this input.
- if (Rec != SlotRec)
- I->error("All $" + Pat->getName() + " inputs must agree with each other");
- if (Slot->getExtTypes() != Pat->getExtTypes())
- I->error("All $" + Pat->getName() + " inputs must agree with each other");
+ assert(Slot->getNumChildren() == 0 && "can't be a use with children!");
+ SlotRec = Slot->getOperator();
}
+
+ // Ensure that the inputs agree if we've already seen this input.
+ if (Rec != SlotRec)
+ I->error("All $" + Pat->getName() + " inputs must agree with each other");
+ if (Slot->getExtTypes() != Pat->getExtTypes())
+ I->error("All $" + Pat->getName() + " inputs must agree with each other");
return true;
}
From sabre at nondot.org Tue Feb 23 00:09:57 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 06:09:57 -0000
Subject: [llvm-commits] [llvm] r96894 -
/llvm/trunk/lib/Target/X86/X86Instr64bit.td
Message-ID: <20100223060957.588892A6C12C@llvm.org>
Author: lattner
Date: Tue Feb 23 00:09:57 2010
New Revision: 96894
URL: http://llvm.org/viewvc/llvm-project?rev=96894&view=rev
Log:
fix a type mismatch in this pattern, where we were using an i64 imm in a
place where an i32 imm was required, the old isel just got lucky.
This fixes CodeGen/X86/x86-64-and-mask.ll
Modified:
llvm/trunk/lib/Target/X86/X86Instr64bit.td
Modified: llvm/trunk/lib/Target/X86/X86Instr64bit.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86Instr64bit.td?rev=96894&r1=96893&r2=96894&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86Instr64bit.td (original)
+++ llvm/trunk/lib/Target/X86/X86Instr64bit.td Tue Feb 23 00:09:57 2010
@@ -65,12 +65,18 @@
return (int64_t)N->getZExtValue() == (int8_t)N->getZExtValue();
}]>;
+def GetLo32XForm : SDNodeXFormgetZExtValue());
+}]>;
+
def i64immSExt32 : PatLeaf<(i64 imm), [{
// i64immSExt32 predicate - True if the 64-bit immediate fits in a 32-bit
// sign extended field.
return (int64_t)N->getZExtValue() == (int32_t)N->getZExtValue();
}]>;
+
def i64immZExt32 : PatLeaf<(i64 imm), [{
// i64immZExt32 predicate - True if the 64-bit immediate fits in a 32-bit
// unsignedsign extended field.
@@ -1981,7 +1987,7 @@
(i64 0),
(AND32ri
(EXTRACT_SUBREG GR64:$src, x86_subreg_32bit),
- imm:$imm),
+ (i32 (GetLo32XForm imm:$imm))),
x86_subreg_32bit)>;
// r & (2^32-1) ==> movz
From sabre at nondot.org Tue Feb 23 00:16:51 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 06:16:51 -0000
Subject: [llvm-commits] [llvm] r96896 - in /llvm/trunk/utils/TableGen:
CodeGenDAGPatterns.cpp CodeGenDAGPatterns.h
Message-ID: <20100223061651.7CC6B2A6C12C@llvm.org>
Author: lattner
Date: Tue Feb 23 00:16:51 2010
New Revision: 96896
URL: http://llvm.org/viewvc/llvm-project?rev=96896&view=rev
Log:
merge some code.
Modified:
llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
llvm/trunk/utils/TableGen/CodeGenDAGPatterns.h
Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp?rev=96896&r1=96895&r2=96896&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp Tue Feb 23 00:16:51 2010
@@ -2077,19 +2077,26 @@
SrcPattern = Pattern;
}
- std::string Reason;
- if (!SrcPattern->canPatternMatch(Reason, *this))
- I->error("Instruction can never match: " + Reason);
-
Record *Instr = II->first;
TreePatternNode *DstPattern = TheInst.getResultPattern();
- PatternsToMatch.
- push_back(PatternToMatch(Instr->getValueAsListInit("Predicates"),
- SrcPattern, DstPattern, TheInst.getImpResults(),
- Instr->getValueAsInt("AddedComplexity")));
+ AddPatternToMatch(I,
+ PatternToMatch(Instr->getValueAsListInit("Predicates"),
+ SrcPattern, DstPattern,
+ TheInst.getImpResults(),
+ Instr->getValueAsInt("AddedComplexity")));
}
}
+void CodeGenDAGPatterns::AddPatternToMatch(const TreePattern *Pattern,
+ const PatternToMatch &PTM) {
+ std::string Reason;
+ if (!PTM.getSrcPattern()->canPatternMatch(Reason, *this))
+ Pattern->error("Instruction can never match: " + Reason);
+
+ PatternsToMatch.push_back(PTM);
+}
+
+
void CodeGenDAGPatterns::InferInstructionFlags() {
std::map &InstrDescs =
@@ -2218,15 +2225,12 @@
TreePattern Temp(Result->getRecord(), DstPattern, false, *this);
Temp.InferAllTypes();
- std::string Reason;
- if (!Pattern->getTree(0)->canPatternMatch(Reason, *this))
- Pattern->error("Pattern can never match: " + Reason);
-
- PatternsToMatch.
- push_back(PatternToMatch(Patterns[i]->getValueAsListInit("Predicates"),
- Pattern->getTree(0),
- Temp.getOnlyTree(), InstImpResults,
- Patterns[i]->getValueAsInt("AddedComplexity")));
+
+ AddPatternToMatch(Pattern,
+ PatternToMatch(Patterns[i]->getValueAsListInit("Predicates"),
+ Pattern->getTree(0),
+ Temp.getOnlyTree(), InstImpResults,
+ Patterns[i]->getValueAsInt("AddedComplexity")));
}
}
Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.h?rev=96896&r1=96895&r2=96896&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.h (original)
+++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.h Tue Feb 23 00:16:51 2010
@@ -625,6 +625,7 @@
void InferInstructionFlags();
void GenerateVariants();
+ void AddPatternToMatch(const TreePattern *Pattern, const PatternToMatch &PTM);
void FindPatternInputsAndOutputs(TreePattern *I, TreePatternNode *Pat,
std::map &InstInputs,
From sabre at nondot.org Tue Feb 23 00:35:46 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 06:35:46 -0000
Subject: [llvm-commits] [llvm] r96898 -
/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
Message-ID: <20100223063546.1805B2A6C12C@llvm.org>
Author: lattner
Date: Tue Feb 23 00:35:45 2010
New Revision: 96898
URL: http://llvm.org/viewvc/llvm-project?rev=96898&view=rev
Log:
reject patterns that mention a name in the destination pattern
but not in the input. Previously, this would trigger an abort
late in the isel logic.
Modified:
llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp?rev=96898&r1=96897&r2=96898&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp Tue Feb 23 00:35:45 2010
@@ -2078,21 +2078,47 @@
}
Record *Instr = II->first;
- TreePatternNode *DstPattern = TheInst.getResultPattern();
AddPatternToMatch(I,
PatternToMatch(Instr->getValueAsListInit("Predicates"),
- SrcPattern, DstPattern,
+ SrcPattern,
+ TheInst.getResultPattern(),
TheInst.getImpResults(),
Instr->getValueAsInt("AddedComplexity")));
}
}
+static void FindNames(const TreePatternNode *P,
+ std::map &Names) {
+ if (!P->getName().empty())
+ Names[P->getName()] = P;
+
+ if (!P->isLeaf()) {
+ for (unsigned i = 0, e = P->getNumChildren(); i != e; ++i)
+ FindNames(P->getChild(i), Names);
+ }
+}
+
void CodeGenDAGPatterns::AddPatternToMatch(const TreePattern *Pattern,
const PatternToMatch &PTM) {
+ // Do some sanity checking on the pattern we're about to match.
std::string Reason;
if (!PTM.getSrcPattern()->canPatternMatch(Reason, *this))
- Pattern->error("Instruction can never match: " + Reason);
+ Pattern->error("Pattern can never match: " + Reason);
+ // Find all of the named values in the input and output, ensure they have the
+ // same type.
+ std::map SrcNames, DstNames;
+ FindNames(PTM.getSrcPattern(), SrcNames);
+ FindNames(PTM.getDstPattern(), DstNames);
+
+ // Scan all of the named values in the destination pattern, rejecting them if
+ // they don't exist in the input pattern.
+ for (std::map::iterator
+ I = DstNames.begin(), E = DstNames.end(); I != E; ++I)
+ if (SrcNames[I->first] == 0)
+ Pattern->error("Pattern has input without matching name in output: $" +
+ I->first);
+
PatternsToMatch.push_back(PTM);
}
From sabre at nondot.org Tue Feb 23 00:54:29 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 06:54:29 -0000
Subject: [llvm-commits] [llvm] r96899 - in /llvm/trunk/lib/Target:
Alpha/AlphaInstrInfo.td PowerPC/PPCInstrInfo.td X86/X86Instr64bit.td
X86/X86InstrInfo.td X86/X86InstrSSE.td
Message-ID: <20100223065429.5F5D02A6C12C@llvm.org>
Author: lattner
Date: Tue Feb 23 00:54:29 2010
New Revision: 96899
URL: http://llvm.org/viewvc/llvm-project?rev=96899&view=rev
Log:
remove a bunch of dead named arguments in input patterns,
though some look dubious afaict, these are all ok.
Modified:
llvm/trunk/lib/Target/Alpha/AlphaInstrInfo.td
llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td
llvm/trunk/lib/Target/X86/X86Instr64bit.td
llvm/trunk/lib/Target/X86/X86InstrInfo.td
llvm/trunk/lib/Target/X86/X86InstrSSE.td
Modified: llvm/trunk/lib/Target/Alpha/AlphaInstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Alpha/AlphaInstrInfo.td?rev=96899&r1=96898&r2=96899&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Alpha/AlphaInstrInfo.td (original)
+++ llvm/trunk/lib/Target/Alpha/AlphaInstrInfo.td Tue Feb 23 00:54:29 2010
@@ -92,7 +92,7 @@
((int64_t)N->getZExtValue() << 32) >> 32;
}], SExt16>;
-def zappat : PatFrag<(ops node:$LHS), (and node:$LHS, imm:$L), [{
+def zappat : PatFrag<(ops node:$LHS), (and node:$LHS, imm), [{
ConstantSDNode *RHS = dyn_cast(N->getOperand(1));
if (!RHS) return 0;
uint64_t build = get_zapImm(N->getOperand(0), (uint64_t)RHS->getZExtValue());
@@ -602,9 +602,9 @@
def MB : MfcPForm<0x18, 0x4000, "mb", s_imisc>; //memory barrier
def WMB : MfcPForm<0x18, 0x4400, "wmb", s_imisc>; //write memory barrier
-def : Pat<(membarrier (i64 imm:$ll), (i64 imm:$ls), (i64 imm:$sl), (i64 1), (i64 imm:$dev)),
+def : Pat<(membarrier (i64 imm), (i64 imm), (i64 imm), (i64 1), (i64 imm)),
(WMB)>;
-def : Pat<(membarrier (i64 imm:$ll), (i64 imm:$ls), (i64 imm:$sl), (i64 imm:$ss), (i64 imm:$dev)),
+def : Pat<(membarrier (i64 imm), (i64 imm), (i64 imm), (i64 imm), (i64 imm)),
(MB)>;
//Basic Floating point ops
Modified: llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td?rev=96899&r1=96898&r2=96899&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td (original)
+++ llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td Tue Feb 23 00:54:29 2010
@@ -1480,11 +1480,11 @@
(FMRSD (LFSX xaddr:$src))>;
// Memory barriers
-def : Pat<(membarrier (i32 imm:$ll),
- (i32 imm:$ls),
- (i32 imm:$sl),
- (i32 imm:$ss),
- (i32 imm:$device)),
+def : Pat<(membarrier (i32 imm /*ll*/),
+ (i32 imm /*ls*/),
+ (i32 imm /*sl*/),
+ (i32 imm /*ss*/),
+ (i32 imm /*device*/)),
(SYNC)>;
include "PPCInstrAltivec.td"
Modified: llvm/trunk/lib/Target/X86/X86Instr64bit.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86Instr64bit.td?rev=96899&r1=96898&r2=96899&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86Instr64bit.td (original)
+++ llvm/trunk/lib/Target/X86/X86Instr64bit.td Tue Feb 23 00:54:29 2010
@@ -2111,34 +2111,34 @@
def : Pat<(shl GR64:$src1, (i8 1)), (ADD64rr GR64:$src1, GR64:$src1)>;
// (shl x (and y, 63)) ==> (shl x, y)
-def : Pat<(shl GR64:$src1, (and CL:$amt, 63)),
+def : Pat<(shl GR64:$src1, (and CL, 63)),
(SHL64rCL GR64:$src1)>;
-def : Pat<(store (shl (loadi64 addr:$dst), (and CL:$amt, 63)), addr:$dst),
+def : Pat<(store (shl (loadi64 addr:$dst), (and CL, 63)), addr:$dst),
(SHL64mCL addr:$dst)>;
-def : Pat<(srl GR64:$src1, (and CL:$amt, 63)),
+def : Pat<(srl GR64:$src1, (and CL, 63)),
(SHR64rCL GR64:$src1)>;
-def : Pat<(store (srl (loadi64 addr:$dst), (and CL:$amt, 63)), addr:$dst),
+def : Pat<(store (srl (loadi64 addr:$dst), (and CL, 63)), addr:$dst),
(SHR64mCL addr:$dst)>;
-def : Pat<(sra GR64:$src1, (and CL:$amt, 63)),
+def : Pat<(sra GR64:$src1, (and CL, 63)),
(SAR64rCL GR64:$src1)>;
-def : Pat<(store (sra (loadi64 addr:$dst), (and CL:$amt, 63)), addr:$dst),
+def : Pat<(store (sra (loadi64 addr:$dst), (and CL, 63)), addr:$dst),
(SAR64mCL addr:$dst)>;
// Double shift patterns
-def : Pat<(shrd GR64:$src1, (i8 imm:$amt1), GR64:$src2, (i8 imm:$amt2)),
+def : Pat<(shrd GR64:$src1, (i8 imm:$amt1), GR64:$src2, (i8 imm)),
(SHRD64rri8 GR64:$src1, GR64:$src2, (i8 imm:$amt1))>;
def : Pat<(store (shrd (loadi64 addr:$dst), (i8 imm:$amt1),
- GR64:$src2, (i8 imm:$amt2)), addr:$dst),
+ GR64:$src2, (i8 imm)), addr:$dst),
(SHRD64mri8 addr:$dst, GR64:$src2, (i8 imm:$amt1))>;
-def : Pat<(shld GR64:$src1, (i8 imm:$amt1), GR64:$src2, (i8 imm:$amt2)),
+def : Pat<(shld GR64:$src1, (i8 imm:$amt1), GR64:$src2, (i8 imm)),
(SHLD64rri8 GR64:$src1, GR64:$src2, (i8 imm:$amt1))>;
def : Pat<(store (shld (loadi64 addr:$dst), (i8 imm:$amt1),
- GR64:$src2, (i8 imm:$amt2)), addr:$dst),
+ GR64:$src2, (i8 imm)), addr:$dst),
(SHLD64mri8 addr:$dst, GR64:$src2, (i8 imm:$amt1))>;
// (or x1, x2) -> (add x1, x2) if two operands are known not to share bits.
Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.td?rev=96899&r1=96898&r2=96899&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrInfo.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrInfo.td Tue Feb 23 00:54:29 2010
@@ -4543,43 +4543,43 @@
def : Pat<(shl GR32:$src1, (i8 1)), (ADD32rr GR32:$src1, GR32:$src1)>;
// (shl x (and y, 31)) ==> (shl x, y)
-def : Pat<(shl GR8:$src1, (and CL:$amt, 31)),
+def : Pat<(shl GR8:$src1, (and CL, 31)),
(SHL8rCL GR8:$src1)>;
-def : Pat<(shl GR16:$src1, (and CL:$amt, 31)),
+def : Pat<(shl GR16:$src1, (and CL, 31)),
(SHL16rCL GR16:$src1)>;
-def : Pat<(shl GR32:$src1, (and CL:$amt, 31)),
+def : Pat<(shl GR32:$src1, (and CL, 31)),
(SHL32rCL GR32:$src1)>;
-def : Pat<(store (shl (loadi8 addr:$dst), (and CL:$amt, 31)), addr:$dst),
+def : Pat<(store (shl (loadi8 addr:$dst), (and CL, 31)), addr:$dst),
(SHL8mCL addr:$dst)>;
-def : Pat<(store (shl (loadi16 addr:$dst), (and CL:$amt, 31)), addr:$dst),
+def : Pat<(store (shl (loadi16 addr:$dst), (and CL, 31)), addr:$dst),
(SHL16mCL addr:$dst)>;
-def : Pat<(store (shl (loadi32 addr:$dst), (and CL:$amt, 31)), addr:$dst),
+def : Pat<(store (shl (loadi32 addr:$dst), (and CL, 31)), addr:$dst),
(SHL32mCL addr:$dst)>;
-def : Pat<(srl GR8:$src1, (and CL:$amt, 31)),
+def : Pat<(srl GR8:$src1, (and CL, 31)),
(SHR8rCL GR8:$src1)>;
-def : Pat<(srl GR16:$src1, (and CL:$amt, 31)),
+def : Pat<(srl GR16:$src1, (and CL, 31)),
(SHR16rCL GR16:$src1)>;
-def : Pat<(srl GR32:$src1, (and CL:$amt, 31)),
+def : Pat<(srl GR32:$src1, (and CL, 31)),
(SHR32rCL GR32:$src1)>;
-def : Pat<(store (srl (loadi8 addr:$dst), (and CL:$amt, 31)), addr:$dst),
+def : Pat<(store (srl (loadi8 addr:$dst), (and CL, 31)), addr:$dst),
(SHR8mCL addr:$dst)>;
-def : Pat<(store (srl (loadi16 addr:$dst), (and CL:$amt, 31)), addr:$dst),
+def : Pat<(store (srl (loadi16 addr:$dst), (and CL, 31)), addr:$dst),
(SHR16mCL addr:$dst)>;
-def : Pat<(store (srl (loadi32 addr:$dst), (and CL:$amt, 31)), addr:$dst),
+def : Pat<(store (srl (loadi32 addr:$dst), (and CL, 31)), addr:$dst),
(SHR32mCL addr:$dst)>;
-def : Pat<(sra GR8:$src1, (and CL:$amt, 31)),
+def : Pat<(sra GR8:$src1, (and CL, 31)),
(SAR8rCL GR8:$src1)>;
-def : Pat<(sra GR16:$src1, (and CL:$amt, 31)),
+def : Pat<(sra GR16:$src1, (and CL, 31)),
(SAR16rCL GR16:$src1)>;
-def : Pat<(sra GR32:$src1, (and CL:$amt, 31)),
+def : Pat<(sra GR32:$src1, (and CL, 31)),
(SAR32rCL GR32:$src1)>;
-def : Pat<(store (sra (loadi8 addr:$dst), (and CL:$amt, 31)), addr:$dst),
+def : Pat<(store (sra (loadi8 addr:$dst), (and CL, 31)), addr:$dst),
(SAR8mCL addr:$dst)>;
-def : Pat<(store (sra (loadi16 addr:$dst), (and CL:$amt, 31)), addr:$dst),
+def : Pat<(store (sra (loadi16 addr:$dst), (and CL, 31)), addr:$dst),
(SAR16mCL addr:$dst)>;
-def : Pat<(store (sra (loadi32 addr:$dst), (and CL:$amt, 31)), addr:$dst),
+def : Pat<(store (sra (loadi32 addr:$dst), (and CL, 31)), addr:$dst),
(SAR32mCL addr:$dst)>;
// (or (x >> c) | (y << (32 - c))) ==> (shrd32 x, y, c)
@@ -4600,11 +4600,11 @@
addr:$dst),
(SHRD32mrCL addr:$dst, GR32:$src2)>;
-def : Pat<(shrd GR32:$src1, (i8 imm:$amt1), GR32:$src2, (i8 imm:$amt2)),
+def : Pat<(shrd GR32:$src1, (i8 imm:$amt1), GR32:$src2, (i8 imm/*:$amt2*/)),
(SHRD32rri8 GR32:$src1, GR32:$src2, (i8 imm:$amt1))>;
def : Pat<(store (shrd (loadi32 addr:$dst), (i8 imm:$amt1),
- GR32:$src2, (i8 imm:$amt2)), addr:$dst),
+ GR32:$src2, (i8 imm/*:$amt2*/)), addr:$dst),
(SHRD32mri8 addr:$dst, GR32:$src2, (i8 imm:$amt1))>;
// (or (x << c) | (y >> (32 - c))) ==> (shld32 x, y, c)
@@ -4625,11 +4625,11 @@
addr:$dst),
(SHLD32mrCL addr:$dst, GR32:$src2)>;
-def : Pat<(shld GR32:$src1, (i8 imm:$amt1), GR32:$src2, (i8 imm:$amt2)),
+def : Pat<(shld GR32:$src1, (i8 imm:$amt1), GR32:$src2, (i8 imm/*:$amt2*/)),
(SHLD32rri8 GR32:$src1, GR32:$src2, (i8 imm:$amt1))>;
def : Pat<(store (shld (loadi32 addr:$dst), (i8 imm:$amt1),
- GR32:$src2, (i8 imm:$amt2)), addr:$dst),
+ GR32:$src2, (i8 imm/*:$amt2*/)), addr:$dst),
(SHLD32mri8 addr:$dst, GR32:$src2, (i8 imm:$amt1))>;
// (or (x >> c) | (y << (16 - c))) ==> (shrd16 x, y, c)
@@ -4650,11 +4650,11 @@
addr:$dst),
(SHRD16mrCL addr:$dst, GR16:$src2)>;
-def : Pat<(shrd GR16:$src1, (i8 imm:$amt1), GR16:$src2, (i8 imm:$amt2)),
+def : Pat<(shrd GR16:$src1, (i8 imm:$amt1), GR16:$src2, (i8 imm/*:$amt2*/)),
(SHRD16rri8 GR16:$src1, GR16:$src2, (i8 imm:$amt1))>;
def : Pat<(store (shrd (loadi16 addr:$dst), (i8 imm:$amt1),
- GR16:$src2, (i8 imm:$amt2)), addr:$dst),
+ GR16:$src2, (i8 imm/*:$amt2*/)), addr:$dst),
(SHRD16mri8 addr:$dst, GR16:$src2, (i8 imm:$amt1))>;
// (or (x << c) | (y >> (16 - c))) ==> (shld16 x, y, c)
@@ -4675,11 +4675,11 @@
addr:$dst),
(SHLD16mrCL addr:$dst, GR16:$src2)>;
-def : Pat<(shld GR16:$src1, (i8 imm:$amt1), GR16:$src2, (i8 imm:$amt2)),
+def : Pat<(shld GR16:$src1, (i8 imm:$amt1), GR16:$src2, (i8 imm/*:$amt2*/)),
(SHLD16rri8 GR16:$src1, GR16:$src2, (i8 imm:$amt1))>;
def : Pat<(store (shld (loadi16 addr:$dst), (i8 imm:$amt1),
- GR16:$src2, (i8 imm:$amt2)), addr:$dst),
+ GR16:$src2, (i8 imm/*:$amt2*/)), addr:$dst),
(SHLD16mri8 addr:$dst, GR16:$src2, (i8 imm:$amt1))>;
// (anyext (setcc_carry)) -> (setcc_carry)
Modified: llvm/trunk/lib/Target/X86/X86InstrSSE.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrSSE.td?rev=96899&r1=96898&r2=96899&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrSSE.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrSSE.td Tue Feb 23 00:54:29 2010
@@ -2383,11 +2383,11 @@
"mfence", [(int_x86_sse2_mfence)]>, TB, Requires<[HasSSE2]>;
//TODO: custom lower this so as to never even generate the noop
-def : Pat<(membarrier (i8 imm:$ll), (i8 imm:$ls), (i8 imm:$sl), (i8 imm:$ss),
+def : Pat<(membarrier (i8 imm), (i8 imm), (i8 imm), (i8 imm),
(i8 0)), (NOOP)>;
def : Pat<(membarrier (i8 0), (i8 0), (i8 0), (i8 1), (i8 1)), (SFENCE)>;
def : Pat<(membarrier (i8 1), (i8 0), (i8 0), (i8 0), (i8 1)), (LFENCE)>;
-def : Pat<(membarrier (i8 imm:$ll), (i8 imm:$ls), (i8 imm:$sl), (i8 imm:$ss),
+def : Pat<(membarrier (i8 imm), (i8 imm), (i8 imm), (i8 imm),
(i8 1)), (MFENCE)>;
// Alias instructions that map zero vector to pxor / xorp* for sse.
From sabre at nondot.org Tue Feb 23 00:55:24 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 06:55:24 -0000
Subject: [llvm-commits] [llvm] r96900 -
/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
Message-ID: <20100223065524.37A8D2A6C12C@llvm.org>
Author: lattner
Date: Tue Feb 23 00:55:24 2010
New Revision: 96900
URL: http://llvm.org/viewvc/llvm-project?rev=96900&view=rev
Log:
reject patterns that have dead named arguments in the input pattern
this is tidier and can find bugs.
Modified:
llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp?rev=96900&r1=96899&r2=96900&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp Tue Feb 23 00:55:24 2010
@@ -2087,10 +2087,20 @@
}
}
+
+typedef std::pair NameRecord;
+
static void FindNames(const TreePatternNode *P,
- std::map &Names) {
- if (!P->getName().empty())
- Names[P->getName()] = P;
+ std::map &Names) {
+ if (!P->getName().empty()) {
+ NameRecord &Rec = Names[P->getName()];
+ // If this is the first instance of the name, remember the node.
+ if (Rec.second++ == 0)
+ Rec.first = P;
+// else
+// assert(Rec.first->getExtTypes() == P->getExtTypes() &&
+// "Type mismatch on name repetition");
+ }
if (!P->isLeaf()) {
for (unsigned i = 0, e = P->getNumChildren(); i != e; ++i)
@@ -2107,18 +2117,25 @@
// Find all of the named values in the input and output, ensure they have the
// same type.
- std::map SrcNames, DstNames;
+ std::map SrcNames, DstNames;
FindNames(PTM.getSrcPattern(), SrcNames);
FindNames(PTM.getDstPattern(), DstNames);
// Scan all of the named values in the destination pattern, rejecting them if
// they don't exist in the input pattern.
- for (std::map::iterator
+ for (std::map::iterator
I = DstNames.begin(), E = DstNames.end(); I != E; ++I)
- if (SrcNames[I->first] == 0)
+ if (SrcNames[I->first].first == 0)
Pattern->error("Pattern has input without matching name in output: $" +
I->first);
-
+
+ // Scan all of the named values in the source pattern, rejecting them if the
+ // name isn't used in the dest, and isn't used to tie two values together.
+ for (std::map::iterator
+ I = SrcNames.begin(), E = SrcNames.end(); I != E; ++I)
+ if (DstNames[I->first].first == 0 && SrcNames[I->first].second == 1)
+ Pattern->error("Pattern has dead named input: $" + I->first);
+
PatternsToMatch.push_back(PTM);
}
From sabre at nondot.org Tue Feb 23 01:16:12 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 07:16:12 -0000
Subject: [llvm-commits] [llvm] r96901 -
/llvm/trunk/lib/Target/X86/X86InstrMMX.td
Message-ID: <20100223071612.B59332A6C12C@llvm.org>
Author: lattner
Date: Tue Feb 23 01:16:12 2010
New Revision: 96901
URL: http://llvm.org/viewvc/llvm-project?rev=96901&view=rev
Log:
remove a confused pattern that is trying to match an address
then use it as an MMX register (!?).
Modified:
llvm/trunk/lib/Target/X86/X86InstrMMX.td
Modified: llvm/trunk/lib/Target/X86/X86InstrMMX.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrMMX.td?rev=96901&r1=96900&r2=96901&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrMMX.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrMMX.td Tue Feb 23 01:16:12 2010
@@ -599,13 +599,6 @@
(MMX_PUNPCKHDQrr VR64:$src, VR64:$src)>;
}
-// Patterns to perform vector shuffling with a zeroed out vector.
-let AddedComplexity = 20 in {
- def : Pat<(bc_v2i32 (mmx_unpckl immAllZerosV,
- (v2i32 (scalar_to_vector (load_mmx addr:$src))))),
- (MMX_PUNPCKLDQrm VR64:$src, VR64:$src)>;
-}
-
// Some special case PANDN patterns.
// FIXME: Get rid of these.
def : Pat<(v1i64 (and (xor VR64:$src1, (bc_v1i64 (v2i32 immAllOnesV))),
From sabre at nondot.org Tue Feb 23 01:21:16 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 07:21:16 -0000
Subject: [llvm-commits] [llvm] r96903 -
/llvm/trunk/lib/Target/CellSPU/SPU64InstrInfo.td
Message-ID: <20100223072116.1D9552A6C12C@llvm.org>
Author: lattner
Date: Tue Feb 23 01:21:15 2010
New Revision: 96903
URL: http://llvm.org/viewvc/llvm-project?rev=96903&view=rev
Log:
disable two patterns that are using non-sensical result pattern types.
Modified:
llvm/trunk/lib/Target/CellSPU/SPU64InstrInfo.td
Modified: llvm/trunk/lib/Target/CellSPU/SPU64InstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/CellSPU/SPU64InstrInfo.td?rev=96903&r1=96902&r2=96903&view=diff
==============================================================================
--- llvm/trunk/lib/Target/CellSPU/SPU64InstrInfo.td (original)
+++ llvm/trunk/lib/Target/CellSPU/SPU64InstrInfo.td Tue Feb 23 01:21:15 2010
@@ -123,8 +123,8 @@
defm I64LGT: CompareLogicalGreaterThan64;
def : Pat<(setugt R64C:$rA, R64C:$rB), I64LGTr64.Fragment>;
-def : Pat<(setugt (v2i64 VECREG:$rA), (v2i64 VECREG:$rB)),
- I64LGTv2i64.Fragment>;
+//def : Pat<(setugt (v2i64 VECREG:$rA), (v2i64 VECREG:$rB)),
+// I64LGTv2i64.Fragment>;
// i64 setult:
def : I64SETCCNegCond;
@@ -201,8 +201,8 @@
defm I64GT: CompareLogicalGreaterThan64;
def : Pat<(setgt R64C:$rA, R64C:$rB), I64GTr64.Fragment>;
-def : Pat<(setgt (v2i64 VECREG:$rA), (v2i64 VECREG:$rB)),
- I64GTv2i64.Fragment>;
+//def : Pat<(setgt (v2i64 VECREG:$rA), (v2i64 VECREG:$rB)),
+// I64GTv2i64.Fragment>;
// i64 setult:
def : I64SETCCNegCond;
From sabre at nondot.org Tue Feb 23 01:22:28 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 07:22:28 -0000
Subject: [llvm-commits] [llvm] r96904 -
/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
Message-ID: <20100223072228.A52182A6C12C@llvm.org>
Author: lattner
Date: Tue Feb 23 01:22:28 2010
New Revision: 96904
URL: http://llvm.org/viewvc/llvm-project?rev=96904&view=rev
Log:
Reject patterns that use a name multiple times in the src or result
of a pattern and where the uses have different types.
Modified:
llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp?rev=96904&r1=96903&r2=96904&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp Tue Feb 23 01:22:28 2010
@@ -2091,20 +2091,21 @@
typedef std::pair NameRecord;
static void FindNames(const TreePatternNode *P,
- std::map &Names) {
+ std::map &Names,
+ const TreePattern *PatternTop) {
if (!P->getName().empty()) {
NameRecord &Rec = Names[P->getName()];
// If this is the first instance of the name, remember the node.
if (Rec.second++ == 0)
Rec.first = P;
-// else
-// assert(Rec.first->getExtTypes() == P->getExtTypes() &&
-// "Type mismatch on name repetition");
+ else if (Rec.first->getExtTypes() != P->getExtTypes())
+ PatternTop->error("repetition of value: $" + P->getName() +
+ " where different uses have different types!");
}
if (!P->isLeaf()) {
for (unsigned i = 0, e = P->getNumChildren(); i != e; ++i)
- FindNames(P->getChild(i), Names);
+ FindNames(P->getChild(i), Names, PatternTop);
}
}
@@ -2118,8 +2119,8 @@
// Find all of the named values in the input and output, ensure they have the
// same type.
std::map SrcNames, DstNames;
- FindNames(PTM.getSrcPattern(), SrcNames);
- FindNames(PTM.getDstPattern(), DstNames);
+ FindNames(PTM.getSrcPattern(), SrcNames, Pattern);
+ FindNames(PTM.getDstPattern(), DstNames, Pattern);
// Scan all of the named values in the destination pattern, rejecting them if
// they don't exist in the input pattern.
From sabre at nondot.org Tue Feb 23 01:50:58 2010
From: sabre at nondot.org (Chris Lattner)
Date: Tue, 23 Feb 2010 07:50:58 -0000
Subject: [llvm-commits] [llvm] r96905 -
/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
Message-ID: <20100223075058.E7EE62A6C12C@llvm.org>
Author: lattner
Date: Tue Feb 23 01:50:58 2010
New Revision: 96905
URL: http://llvm.org/viewvc/llvm-project?rev=96905&view=rev
Log:
add some #if 0'd out code for checking that named values in
input/output patterns have the same type. It turns out that
this triggers all the time because we don't infer types
between these boundaries. Until we do, don't turn this on.
Modified:
llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
Modified: llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp?rev=96905&r1=96904&r2=96905&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenDAGPatterns.cpp Tue Feb 23 01:50:58 2010
@@ -568,33 +568,36 @@
return true; // unreachable
}
+static std::string GetTypeName(unsigned char TypeID) {
+ switch (TypeID) {
+ case MVT::Other: return "Other";
+ case MVT::iAny: return "iAny";
+ case MVT::fAny: return "fAny";
+ case MVT::vAny: return "vAny";
+ case EEVT::isUnknown: return "isUnknown";
+ case MVT::iPTR: return "iPTR";
+ case MVT::iPTRAny: return "iPTRAny";
+ default:
+ std::string VTName = llvm::getName((MVT::SimpleValueType)TypeID);
+ // Strip off EVT:: prefix if present.
+ if (VTName.substr(0,5) == "MVT::")
+ VTName = VTName.substr(5);
+ return VTName;
+ }
+}
+
void TreePatternNode::print(raw_ostream &OS) const {
if (isLeaf()) {
OS << *getLeafValue();
} else {
- OS << "(" << getOperator()->getName();
+ OS << '(' << getOperator()->getName();
}
// FIXME: At some point we should handle printing all the value types for
// nodes that are multiply typed.
- switch (getExtTypeNum(0)) {
- case MVT::Other: OS << ":Other"; break;
- case MVT::iAny: OS << ":iAny"; break;
- case MVT::fAny : OS << ":fAny"; break;
- case MVT::vAny: OS << ":vAny"; break;
- case EEVT::isUnknown: ; /*OS << ":?";*/ break;
- case MVT::iPTR: OS << ":iPTR"; break;
- case MVT::iPTRAny: OS << ":iPTRAny"; break;
- default: {
- std::string VTName = llvm::getName(getTypeNum(0));
- // Strip off EVT:: prefix if present.
- if (VTName.substr(0,5) == "MVT::")
- VTName = VTName.substr(5);
- OS << ":" << VTName;
- break;
- }
- }
+ if (getExtTypeNum(0) != EEVT::isUnknown)
+ OS << ':' << GetTypeName(getExtTypeNum(0));
if (!isLeaf()) {
if (getNumChildren() != 0) {
@@ -2125,10 +2128,29 @@
// Scan all of the named values in the destination pattern, rejecting them if
// they don't exist in the input pattern.
for (std::map::iterator
- I = DstNames.begin(), E = DstNames.end(); I != E; ++I)
+ I = DstNames.begin(), E = DstNames.end(); I != E; ++I) {
if (SrcNames[I->first].first == 0)
Pattern->error("Pattern has input without matching name in output: $" +
I->first);
+
+#if 0
+ const std::vector &SrcTypeVec =
+ SrcNames[I->first].first->getExtTypes();
+ const std::vector &DstTypeVec =
+ I->second.first->getExtTypes();
+ if (SrcTypeVec == DstTypeVec) continue;
+
+ std::string SrcType, DstType;
+ for (unsigned i = 0, e = SrcTypeVec.size(); i != e; ++i)
+ SrcType += ":" + GetTypeName(SrcTypeVec[i]);
+ for (unsigned i = 0, e = DstTypeVec.size(); i != e; ++i)
+ DstType += ":" + GetTypeName(DstTypeVec[i]);
+
+ Pattern->error("Variable $" + I->first +
+ " has different types in source (" + SrcType +
+ ") and dest (" + DstType + ") pattern!");
+#endif
+ }
// Scan all of the named values in the source pattern, rejecting them if the
// name isn't used in the dest, and isn't used to tie two values together.
From daniel at zuster.org Tue Feb 23 01:56:18 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 07:56:18 -0000
Subject: [llvm-commits] [llvm] r96906 - in /llvm/trunk:
docs/TestingGuide.html test/Makefile test/lib/llvm.exp test/site.exp.in
utils/lit/lit/ExampleTests/LLVM.InTree/test/site.exp
utils/lit/lit/ExampleTests/LLVM.OutOfTree/obj/test/site.exp
Message-ID: <20100223075618.D23BC2A6C12C@llvm.org>
Author: ddunbar
Date: Tue Feb 23 01:56:18 2010
New Revision: 96906
URL: http://llvm.org/viewvc/llvm-project?rev=96906&view=rev
Log:
Kill unused llvmgccmajvers testing variable.
Modified:
llvm/trunk/docs/TestingGuide.html
llvm/trunk/test/Makefile
llvm/trunk/test/lib/llvm.exp
llvm/trunk/test/site.exp.in
llvm/trunk/utils/lit/lit/ExampleTests/LLVM.InTree/test/site.exp
llvm/trunk/utils/lit/lit/ExampleTests/LLVM.OutOfTree/obj/test/site.exp
Modified: llvm/trunk/docs/TestingGuide.html
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/TestingGuide.html?rev=96906&r1=96905&r2=96906&view=diff
==============================================================================
--- llvm/trunk/docs/TestingGuide.html (original)
+++ llvm/trunk/docs/TestingGuide.html Tue Feb 23 01:56:18 2010
@@ -764,9 +764,6 @@
- llvmgcc_version (%llvmgcc_version)
- The full version number of the llvm-gcc executable.
- - llvmgccmajvers (%llvmgccmajvers)
- - The major version number of the llvm-gcc executable.
-
- gccpath
- The full path to the C compiler used to build LLVM. Note that
this might not be gcc.
Modified: llvm/trunk/test/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Makefile?rev=96906&r1=96905&r2=96906&view=diff
==============================================================================
--- llvm/trunk/test/Makefile (original)
+++ llvm/trunk/test/Makefile Tue Feb 23 01:56:18 2010
@@ -170,7 +170,6 @@
@echo 'set link "' $(CXX) $(CPP.Flags) $(CXX.Flags) $(TargetCommonOpts) $(CompileCommonOpts) $(LD.Flags) '"' >>site.tmp
@echo 'set llvmgcc "$(LLVMGCC) $(TargetCommonOpts) $(EXTRA_OPTIONS)"' >> site.tmp
@echo 'set llvmgxx "$(LLVMGCC) $(TargetCommonOpts) $(EXTRA_OPTIONS)"' >> site.tmp
- @echo 'set llvmgccmajvers "$(LLVMGCC_MAJVERS)"' >> site.tmp
@echo 'set bugpoint_topts $(BUGPOINT_TOPTS)' >> site.tmp
@echo 'set shlibext "$(SHLIBEXT)"' >> site.tmp
@echo 'set ocamlopt "$(OCAMLOPT) -cc \"$(CXX_FOR_OCAMLOPT)\" -I $(LibDir)/ocaml"' >> site.tmp
Modified: llvm/trunk/test/lib/llvm.exp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/lib/llvm.exp?rev=96906&r1=96905&r2=96906&view=diff
==============================================================================
--- llvm/trunk/test/lib/llvm.exp (original)
+++ llvm/trunk/test/lib/llvm.exp Tue Feb 23 01:56:18 2010
@@ -47,7 +47,7 @@
# cases.
proc substitute { line test tmpFile } {
global srcroot objroot srcdir objdir subdir target_triplet
- global llvmgcc llvmgxx llvmgcc_version llvmgccmajvers ocamlopt
+ global llvmgcc llvmgxx llvmgcc_version ocamlopt
global gccpath gxxpath compile_c compile_cxx link shlibext llvmlibsdir
global llvmdsymutil valgrind grep gas bugpoint_topts
set path [file join $srcdir $subdir]
Modified: llvm/trunk/test/site.exp.in
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/site.exp.in?rev=96906&r1=96905&r2=96906&view=diff
==============================================================================
--- llvm/trunk/test/site.exp.in (original)
+++ llvm/trunk/test/site.exp.in Tue Feb 23 01:56:18 2010
@@ -18,7 +18,6 @@
set link "@TEST_LINK_CMD@"
set llvmgcc "@LLVMGCC@"
set llvmgxx "@LLVMGXX@"
-set llvmgccmajvers "@LLVMGCCMAJVERS@"
set bugpoint_topts "@BUGPOINT_TOPTS@"
set shlibext "@SHLIBEXT@"
set ocamlopt "@OCAMLOPT@"
Modified: llvm/trunk/utils/lit/lit/ExampleTests/LLVM.InTree/test/site.exp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/ExampleTests/LLVM.InTree/test/site.exp?rev=96906&r1=96905&r2=96906&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/ExampleTests/LLVM.InTree/test/site.exp (original)
+++ llvm/trunk/utils/lit/lit/ExampleTests/LLVM.InTree/test/site.exp Tue Feb 23 01:56:18 2010
@@ -19,7 +19,6 @@
set link " /usr/bin/g++ -arch x86_64 -I/Users/ddunbar/llvm.obj.64/include -I/Users/ddunbar/llvm.obj.64/test -I/Volumes/Data/ddunbar/llvm.obj.64/include -I/Volumes/Data/ddunbar/llvm/include -I/Volumes/Data/ddunbar/llvm/test -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -g -fno-exceptions -fno-common -Woverloaded-virtual -m64 -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings -g -L/Users/ddunbar/llvm.obj.64/Debug/lib -L/Volumes/Data/ddunbar/llvm.obj.64/Debug/lib "
set llvmgcc "/Users/ddunbar/llvm-gcc/install/bin/llvm-gcc -m64 "
set llvmgxx "/Users/ddunbar/llvm-gcc/install/bin/llvm-gcc -m64 "
-set llvmgccmajvers "4"
set bugpoint_topts "-gcc-tool-args -m64"
set shlibext ".dylib"
set ocamlopt "/sw/bin/ocamlopt -cc \"g++ -Wall -D_FILE_OFFSET_BITS=64 -D_REENTRANT\" -I /Users/ddunbar/llvm.obj.64/Debug/lib/ocaml"
Modified: llvm/trunk/utils/lit/lit/ExampleTests/LLVM.OutOfTree/obj/test/site.exp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/ExampleTests/LLVM.OutOfTree/obj/test/site.exp?rev=96906&r1=96905&r2=96906&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/ExampleTests/LLVM.OutOfTree/obj/test/site.exp (original)
+++ llvm/trunk/utils/lit/lit/ExampleTests/LLVM.OutOfTree/obj/test/site.exp Tue Feb 23 01:56:18 2010
@@ -19,7 +19,6 @@
set link " /usr/bin/g++ -arch x86_64 -I/Users/ddunbar/llvm.obj.64/include -I/Users/ddunbar/llvm.obj.64/test -I/Volumes/Data/ddunbar/llvm.obj.64/include -I/Volumes/Data/ddunbar/llvm/include -I/Volumes/Data/ddunbar/llvm/test -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -g -fno-exceptions -fno-common -Woverloaded-virtual -m64 -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings -g -L/Users/ddunbar/llvm.obj.64/Debug/lib -L/Volumes/Data/ddunbar/llvm.obj.64/Debug/lib "
set llvmgcc "/Users/ddunbar/llvm-gcc/install/bin/llvm-gcc -m64 "
set llvmgxx "/Users/ddunbar/llvm-gcc/install/bin/llvm-gcc -m64 "
-set llvmgccmajvers "4"
set bugpoint_topts "-gcc-tool-args -m64"
set shlibext ".dylib"
set ocamlopt "/sw/bin/ocamlopt -cc \"g++ -Wall -D_FILE_OFFSET_BITS=64 -D_REENTRANT\" -I /Users/ddunbar/llvm.obj.64/Debug/lib/ocaml"
From daniel at zuster.org Tue Feb 23 01:56:22 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 07:56:22 -0000
Subject: [llvm-commits] [llvm] r96907 - in /llvm/trunk: Makefile
Makefile.config.in Makefile.rules autoconf/configure.ac configure
tools/llvm-config/CMakeLists.txt
Message-ID: <20100223075622.7E1A82A6C12D@llvm.org>
Author: ddunbar
Date: Tue Feb 23 01:56:22 2010
New Revision: 96907
URL: http://llvm.org/viewvc/llvm-project?rev=96907&view=rev
Log:
Kill off LLVMGCC_MAJVERS make variable.
Modified:
llvm/trunk/Makefile
llvm/trunk/Makefile.config.in
llvm/trunk/Makefile.rules
llvm/trunk/autoconf/configure.ac
llvm/trunk/configure
llvm/trunk/tools/llvm-config/CMakeLists.txt
Modified: llvm/trunk/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile?rev=96907&r1=96906&r2=96907&view=diff
==============================================================================
--- llvm/trunk/Makefile (original)
+++ llvm/trunk/Makefile Tue Feb 23 01:56:22 2010
@@ -43,13 +43,6 @@
include $(LEVEL)/Makefile.config
-# llvm-gcc4 doesn't need runtime libs. llvm-gcc4 is the only supported one.
-# FIXME: Remove runtime entirely once we have an understanding of where
-# libprofile etc should go.
-#ifeq ($(LLVMGCC_MAJVERS),4)
-# DIRS := $(filter-out runtime, $(DIRS))
-#endif
-
ifeq ($(MAKECMDGOALS),libs-only)
DIRS := $(filter-out tools runtime docs, $(DIRS))
OPTIONAL_DIRS :=
Modified: llvm/trunk/Makefile.config.in
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.config.in?rev=96907&r1=96906&r2=96907&view=diff
==============================================================================
--- llvm/trunk/Makefile.config.in (original)
+++ llvm/trunk/Makefile.config.in Tue Feb 23 01:56:22 2010
@@ -184,11 +184,7 @@
LLVMGCCDIR := @LLVMGCCDIR@
# Determine the target for which LLVM should generate code.
-ifeq (@LLVMGCC_MAJVERS@,3)
-LLVMGCCARCH := @target@/3.4-llvm
-else
LLVMGCCARCH := @target@/@LLVMGCC_VERSION@
-endif
# Determine the path where the library executables are
LLVMGCCLIBEXEC := @LLVMGCCLIBEXEC@
@@ -199,7 +195,6 @@
LLVMCC1 := @LLVMCC1@
LLVMCC1PLUS := @LLVMCC1PLUS@
LLVMGCC_VERSION := @LLVMGCC_VERSION@
-LLVMGCC_MAJVERS := @LLVMGCC_MAJVERS@
LLVMGCC_LANGS := @LLVMGCC_LANGS@
# Path to directory where object files should be stored during a build.
Modified: llvm/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.rules?rev=96907&r1=96906&r2=96907&view=diff
==============================================================================
--- llvm/trunk/Makefile.rules (original)
+++ llvm/trunk/Makefile.rules Tue Feb 23 01:56:22 2010
@@ -532,13 +532,8 @@
ifndef LUPGRADE
LUPGRADE := $(LLVMToolDir)/llvm-upgrade$(EXEEXT)
endif
-ifeq ($(LLVMGCC_MAJVERS),3)
-LLVMGCCWITHPATH := PATH="$(LLVMToolDir):$(PATH)" $(LLVMGCC)
-LLVMGXXWITHPATH := PATH="$(LLVMToolDir):$(PATH)" $(LLVMGXX)
-else
LLVMGCCWITHPATH := $(LLVMGCC)
LLVMGXXWITHPATH := $(LLVMGXX)
-endif
#--------------------------------------------------------------------
# Adjust to user's request
Modified: llvm/trunk/autoconf/configure.ac
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/configure.ac?rev=96907&r1=96906&r2=96907&view=diff
==============================================================================
--- llvm/trunk/autoconf/configure.ac (original)
+++ llvm/trunk/autoconf/configure.ac Tue Feb 23 01:56:22 2010
@@ -1255,7 +1255,6 @@
llvmgccversion=[`"$LLVMGCC" -dumpversion 2>&1 | sed 's/^\([0-9.]*\).*/\1/'`]
llvmgccmajvers=[`echo $llvmgccversion | sed 's/^\([0-9]\).*/\1/'`]
AC_SUBST(LLVMGCC_VERSION,$llvmgccversion)
- AC_SUBST(LLVMGCC_MAJVERS,$llvmgccmajvers)
llvmgcclangs=[`"$LLVMGCC" -v --help 2>&1 | grep '^Configured with:' | sed 's/^.*--enable-languages=\([^ ]*\).*/\1/'`]
AC_SUBST(LLVMGCC_LANGS,$llvmgcclangs)
AC_MSG_RESULT([ok])
Modified: llvm/trunk/configure
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/configure?rev=96907&r1=96906&r2=96907&view=diff
==============================================================================
--- llvm/trunk/configure (original)
+++ llvm/trunk/configure Tue Feb 23 01:56:22 2010
@@ -766,7 +766,6 @@
LLVMGCCDIR
LLVMGCCLIBEXEC
LLVMGCC_VERSION
-LLVMGCC_MAJVERS
LLVMGCC_LANGS
SHLIBEXT
LLVM_PREFIX
@@ -11035,7 +11034,7 @@
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <&1 | grep '^Configured with:' | sed 's/^.*--enable-languages=\([^ ]*\).*/\1/'`
LLVMGCC_LANGS=$llvmgcclangs
@@ -20770,7 +20767,6 @@
LLVMGCCDIR!$LLVMGCCDIR$ac_delim
LLVMGCCLIBEXEC!$LLVMGCCLIBEXEC$ac_delim
LLVMGCC_VERSION!$LLVMGCC_VERSION$ac_delim
-LLVMGCC_MAJVERS!$LLVMGCC_MAJVERS$ac_delim
LLVMGCC_LANGS!$LLVMGCC_LANGS$ac_delim
SHLIBEXT!$SHLIBEXT$ac_delim
LLVM_PREFIX!$LLVM_PREFIX$ac_delim
@@ -20793,7 +20789,7 @@
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 88; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 87; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
Modified: llvm/trunk/tools/llvm-config/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-config/CMakeLists.txt?rev=96907&r1=96906&r2=96907&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-config/CMakeLists.txt (original)
+++ llvm/trunk/tools/llvm-config/CMakeLists.txt Tue Feb 23 01:56:22 2010
@@ -19,7 +19,6 @@
#set(LLVMGCC "")
#set(LLVMGXX "")
#set(LLVMGCC_VERSION "")
-#set(LLVMGCC_MAJVERS "")
test_big_endian(IS_BIG_ENDIAN)
if( IS_BIG_ENDIAN )
set(ENDIAN "big")
From daniel at zuster.org Tue Feb 23 01:56:28 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 07:56:28 -0000
Subject: [llvm-commits] [llvm] r96908 - in /llvm/trunk:
docs/TestingGuide.html test/FrontendC/2007-09-17-WeakRef.c test/Makefile
test/lib/llvm.exp test/site.exp.in
utils/lit/lit/ExampleTests/LLVM.InTree/test/site.exp
utils/lit/lit/ExampleTests/LLVM.OutOfTree/obj/test/site.exp
Message-ID: <20100223075628.944A22A6C12C@llvm.org>
Author: ddunbar
Date: Tue Feb 23 01:56:28 2010
New Revision: 96908
URL: http://llvm.org/viewvc/llvm-project?rev=96908&view=rev
Log:
Eliminate llvmgcc_version testing variable.
Modified:
llvm/trunk/docs/TestingGuide.html
llvm/trunk/test/FrontendC/2007-09-17-WeakRef.c
llvm/trunk/test/Makefile
llvm/trunk/test/lib/llvm.exp
llvm/trunk/test/site.exp.in
llvm/trunk/utils/lit/lit/ExampleTests/LLVM.InTree/test/site.exp
llvm/trunk/utils/lit/lit/ExampleTests/LLVM.OutOfTree/obj/test/site.exp
Modified: llvm/trunk/docs/TestingGuide.html
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/TestingGuide.html?rev=96908&r1=96907&r2=96908&view=diff
==============================================================================
--- llvm/trunk/docs/TestingGuide.html (original)
+++ llvm/trunk/docs/TestingGuide.html Tue Feb 23 01:56:28 2010
@@ -761,9 +761,6 @@
- The full path to the llvm-gxx executable as specified in the
configured LLVM environment
- - llvmgcc_version (%llvmgcc_version)
- - The full version number of the llvm-gcc executable.
-
- gccpath
- The full path to the C compiler used to build LLVM. Note that
this might not be gcc.
@@ -821,22 +818,20 @@
Sometimes it is necessary to mark a test case as "expected fail" or XFAIL.
- You can easily mark a test as XFAIL just by including XFAIL: on a
+ You can easily mark a test as XFAIL just by including XFAIL: on a
line near the top of the file. This signals that the test case should succeed
if the test fails. Such test cases are counted separately by DejaGnu. To
specify an expected fail, use the XFAIL keyword in the comments of the test
program followed by a colon and one or more regular expressions (separated by
- a comma). The regular expressions allow you to XFAIL the test conditionally
- by host platform. The regular expressions following the : are matched against
- the target triplet or llvmgcc version number for the host machine. If there is
- a match, the test is expected to fail. If not, the test is expected to
- succeed. To XFAIL everywhere just specify XFAIL: *. When matching
- the llvm-gcc version, you can specify the major (e.g. 3) or full version
- (i.e. 3.4) number. Here is an example of an XFAIL line:
+ a comma). The regular expressions allow you to XFAIL the test conditionally by
+ host platform. The regular expressions following the : are matched against the
+ target triplet for the host machine. If there is a match, the test is expected
+ to fail. If not, the test is expected to succeed. To XFAIL everywhere just
+ specify XFAIL: *. Here is an example of an XFAIL line:
-; XFAIL: darwin,sun,llvmgcc4
+; XFAIL: darwin,sun
Modified: llvm/trunk/test/FrontendC/2007-09-17-WeakRef.c
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/FrontendC/2007-09-17-WeakRef.c?rev=96908&r1=96907&r2=96908&view=diff
==============================================================================
--- llvm/trunk/test/FrontendC/2007-09-17-WeakRef.c (original)
+++ llvm/trunk/test/FrontendC/2007-09-17-WeakRef.c Tue Feb 23 01:56:28 2010
@@ -1,6 +1,6 @@
// RUN: %llvmgcc -O1 -S %s -o - | grep icmp
// PR1678
-// XFAIL: llvmgcc4.0.1
+
extern void B (void);
static __typeof(B) A __attribute__ ((__weakref__("B")));
int active (void)
Modified: llvm/trunk/test/Makefile
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Makefile?rev=96908&r1=96907&r2=96908&view=diff
==============================================================================
--- llvm/trunk/test/Makefile (original)
+++ llvm/trunk/test/Makefile Tue Feb 23 01:56:28 2010
@@ -155,7 +155,6 @@
@echo 'set target_triplet "$(TARGET_TRIPLE)"' >> site.tmp
@echo 'set TARGETS_TO_BUILD "$(TARGETS_TO_BUILD)"' >> site.tmp
@echo 'set llvmgcc_langs "$(LLVMGCC_LANGS)"' >> site.tmp
- @echo 'set llvmgcc_version "$(LLVMGCC_VERSION)"' >> site.tmp
@echo 'set llvmtoolsdir "$(ToolDir)"' >>site.tmp
@echo 'set llvmlibsdir "$(LibDir)"' >>site.tmp
@echo 'set llvm_bindings "$(BINDINGS_TO_BUILD)"' >> site.tmp
Modified: llvm/trunk/test/lib/llvm.exp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/lib/llvm.exp?rev=96908&r1=96907&r2=96908&view=diff
==============================================================================
--- llvm/trunk/test/lib/llvm.exp (original)
+++ llvm/trunk/test/lib/llvm.exp Tue Feb 23 01:56:28 2010
@@ -47,7 +47,7 @@
# cases.
proc substitute { line test tmpFile } {
global srcroot objroot srcdir objdir subdir target_triplet
- global llvmgcc llvmgxx llvmgcc_version ocamlopt
+ global llvmgcc llvmgxx ocamlopt
global gccpath gxxpath compile_c compile_cxx link shlibext llvmlibsdir
global llvmdsymutil valgrind grep gas bugpoint_topts
set path [file join $srcdir $subdir]
@@ -119,7 +119,7 @@
# This procedure runs the set of tests for the test_source_files array.
proc RunLLVMTests { test_source_files } {
- global srcroot objroot srcdir objdir subdir target_triplet llvmgcc_version
+ global srcroot objroot srcdir objdir subdir target_triplet
set timeout 60
set path [file join $objdir $subdir]
@@ -194,12 +194,6 @@
if {$targetPASS != 1} {
set outcome XFAIL
}
- } elseif { [regexp {llvmgcc(([0-9]+)|([0-9]+[.][0-9]+))} $target match submatch submatch2] } {
- if { [regexp ^($submatch)$|^(($submatch)(\.)) $llvmgcc_version match] } {
- if {$targetPASS != 1} {
- set outcome XFAIL
- }
- }
}
}
} elseif {[regexp {XTARGET:[ *](.+)} $line match targets]} {
@@ -213,11 +207,6 @@
} elseif { [regexp $target $target_triplet match] } {
set targetPASS 1
set outcome PASS
- } elseif { [regexp {llvmgcc(([0-9]+)|([0-9]+[.][0-9]+))} $target match submatch submatch2] } {
- if { [regexp ^($submatch)$|^(($submatch)(\.)) $llvmgcc_version match] } {
- set targetPASS 1
- set outcome PASS
- }
}
}
}
Modified: llvm/trunk/test/site.exp.in
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/site.exp.in?rev=96908&r1=96907&r2=96908&view=diff
==============================================================================
--- llvm/trunk/test/site.exp.in (original)
+++ llvm/trunk/test/site.exp.in Tue Feb 23 01:56:28 2010
@@ -3,7 +3,6 @@
set target_triplet "@TARGET_TRIPLE@"
set TARGETS_TO_BUILD "@TARGETS_TO_BUILD@"
set llvmgcc_langs "@LLVMGCC_LANGS@"
-set llvmgcc_version "@LLVMGCC_VERSION@"
set llvmtoolsdir "@LLVM_TOOLS_DIR@"
set llvmlibsdir "@LLVM_LIBS_DIR@"
set llvm_bindings "@LLVM_BINDINGS@"
Modified: llvm/trunk/utils/lit/lit/ExampleTests/LLVM.InTree/test/site.exp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/ExampleTests/LLVM.InTree/test/site.exp?rev=96908&r1=96907&r2=96908&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/ExampleTests/LLVM.InTree/test/site.exp (original)
+++ llvm/trunk/utils/lit/lit/ExampleTests/LLVM.InTree/test/site.exp Tue Feb 23 01:56:28 2010
@@ -4,7 +4,6 @@
set target_triplet "x86_64-apple-darwin10"
set TARGETS_TO_BUILD "X86 Sparc PowerPC Alpha ARM Mips CellSPU PIC16 XCore MSP430 SystemZ Blackfin CBackend MSIL CppBackend"
set llvmgcc_langs "c,c++,objc,obj-c++"
-set llvmgcc_version "4.2.1"
set prcontext "/usr/bin/tclsh8.4 /Volumes/Data/ddunbar/llvm/test/Scripts/prcontext.tcl"
set llvmtoolsdir "/Users/ddunbar/llvm.obj.64/Debug/bin"
set llvmlibsdir "/Users/ddunbar/llvm.obj.64/Debug/lib"
Modified: llvm/trunk/utils/lit/lit/ExampleTests/LLVM.OutOfTree/obj/test/site.exp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/ExampleTests/LLVM.OutOfTree/obj/test/site.exp?rev=96908&r1=96907&r2=96908&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/ExampleTests/LLVM.OutOfTree/obj/test/site.exp (original)
+++ llvm/trunk/utils/lit/lit/ExampleTests/LLVM.OutOfTree/obj/test/site.exp Tue Feb 23 01:56:28 2010
@@ -4,7 +4,6 @@
set target_triplet "x86_64-apple-darwin10"
set TARGETS_TO_BUILD "X86 Sparc PowerPC Alpha ARM Mips CellSPU PIC16 XCore MSP430 SystemZ Blackfin CBackend MSIL CppBackend"
set llvmgcc_langs "c,c++,objc,obj-c++"
-set llvmgcc_version "4.2.1"
set prcontext "/usr/bin/tclsh8.4 /Volumes/Data/ddunbar/llvm/test/Scripts/prcontext.tcl"
set llvmtoolsdir "/Users/ddunbar/llvm.obj.64/Debug/bin"
set llvmlibsdir "/Users/ddunbar/llvm.obj.64/Debug/lib"
From daniel at zuster.org Tue Feb 23 01:56:31 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 07:56:31 -0000
Subject: [llvm-commits] [llvm] r96909 - in /llvm/trunk: Makefile.config.in
autoconf/configure.ac configure tools/llvm-config/CMakeLists.txt
Message-ID: <20100223075631.D39142A6C12D@llvm.org>
Author: ddunbar
Date: Tue Feb 23 01:56:31 2010
New Revision: 96909
URL: http://llvm.org/viewvc/llvm-project?rev=96909&view=rev
Log:
Kill off LLVMGCCARCH and LLVMGCC_VERSION make variables.
Modified:
llvm/trunk/Makefile.config.in
llvm/trunk/autoconf/configure.ac
llvm/trunk/configure
llvm/trunk/tools/llvm-config/CMakeLists.txt
Modified: llvm/trunk/Makefile.config.in
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.config.in?rev=96909&r1=96908&r2=96909&view=diff
==============================================================================
--- llvm/trunk/Makefile.config.in (original)
+++ llvm/trunk/Makefile.config.in Tue Feb 23 01:56:31 2010
@@ -183,9 +183,6 @@
# want to override the value set by configure.
LLVMGCCDIR := @LLVMGCCDIR@
-# Determine the target for which LLVM should generate code.
-LLVMGCCARCH := @target@/@LLVMGCC_VERSION@
-
# Determine the path where the library executables are
LLVMGCCLIBEXEC := @LLVMGCCLIBEXEC@
@@ -194,7 +191,6 @@
LLVMGXX := @LLVMGXX@
LLVMCC1 := @LLVMCC1@
LLVMCC1PLUS := @LLVMCC1PLUS@
-LLVMGCC_VERSION := @LLVMGCC_VERSION@
LLVMGCC_LANGS := @LLVMGCC_LANGS@
# Path to directory where object files should be stored during a build.
Modified: llvm/trunk/autoconf/configure.ac
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/configure.ac?rev=96909&r1=96908&r2=96909&view=diff
==============================================================================
--- llvm/trunk/autoconf/configure.ac (original)
+++ llvm/trunk/autoconf/configure.ac Tue Feb 23 01:56:31 2010
@@ -1252,9 +1252,6 @@
AC_SUBST(LLVMGCCDIR,$llvmgccdir)
llvmgcclibexec=`echo "$llvmcc1path" | sed 's,/cc1,,'`
AC_SUBST(LLVMGCCLIBEXEC,$llvmgcclibexec)
- llvmgccversion=[`"$LLVMGCC" -dumpversion 2>&1 | sed 's/^\([0-9.]*\).*/\1/'`]
- llvmgccmajvers=[`echo $llvmgccversion | sed 's/^\([0-9]\).*/\1/'`]
- AC_SUBST(LLVMGCC_VERSION,$llvmgccversion)
llvmgcclangs=[`"$LLVMGCC" -v --help 2>&1 | grep '^Configured with:' | sed 's/^.*--enable-languages=\([^ ]*\).*/\1/'`]
AC_SUBST(LLVMGCC_LANGS,$llvmgcclangs)
AC_MSG_RESULT([ok])
Modified: llvm/trunk/configure
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/configure?rev=96909&r1=96908&r2=96909&view=diff
==============================================================================
--- llvm/trunk/configure (original)
+++ llvm/trunk/configure Tue Feb 23 01:56:31 2010
@@ -765,7 +765,6 @@
LLVMCC1PLUS
LLVMGCCDIR
LLVMGCCLIBEXEC
-LLVMGCC_VERSION
LLVMGCC_LANGS
SHLIBEXT
LLVM_PREFIX
@@ -11034,7 +11033,7 @@
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <&1 | sed 's/^\([0-9.]*\).*/\1/'`
- llvmgccmajvers=`echo $llvmgccversion | sed 's/^\([0-9]\).*/\1/'`
- LLVMGCC_VERSION=$llvmgccversion
-
llvmgcclangs=`"$LLVMGCC" -v --help 2>&1 | grep '^Configured with:' | sed 's/^.*--enable-languages=\([^ ]*\).*/\1/'`
LLVMGCC_LANGS=$llvmgcclangs
@@ -20766,7 +20761,6 @@
LLVMCC1PLUS!$LLVMCC1PLUS$ac_delim
LLVMGCCDIR!$LLVMGCCDIR$ac_delim
LLVMGCCLIBEXEC!$LLVMGCCLIBEXEC$ac_delim
-LLVMGCC_VERSION!$LLVMGCC_VERSION$ac_delim
LLVMGCC_LANGS!$LLVMGCC_LANGS$ac_delim
SHLIBEXT!$SHLIBEXT$ac_delim
LLVM_PREFIX!$LLVM_PREFIX$ac_delim
@@ -20789,7 +20783,7 @@
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 87; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 86; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
Modified: llvm/trunk/tools/llvm-config/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-config/CMakeLists.txt?rev=96909&r1=96908&r2=96909&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-config/CMakeLists.txt (original)
+++ llvm/trunk/tools/llvm-config/CMakeLists.txt Tue Feb 23 01:56:31 2010
@@ -18,7 +18,6 @@
#set(LLVMGCCDIR "")
#set(LLVMGCC "")
#set(LLVMGXX "")
-#set(LLVMGCC_VERSION "")
test_big_endian(IS_BIG_ENDIAN)
if( IS_BIG_ENDIAN )
set(ENDIAN "big")
From daniel at zuster.org Tue Feb 23 01:56:34 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 07:56:34 -0000
Subject: [llvm-commits] [llvm] r96910 - in /llvm/trunk: Makefile.config.in
autoconf/configure.ac configure
Message-ID: <20100223075634.A53BD2A6C12E@llvm.org>
Author: ddunbar
Date: Tue Feb 23 01:56:34 2010
New Revision: 96910
URL: http://llvm.org/viewvc/llvm-project?rev=96910&view=rev
Log:
Kill off unused LLVMGCCLIBEXEC make variable.
Modified:
llvm/trunk/Makefile.config.in
llvm/trunk/autoconf/configure.ac
llvm/trunk/configure
Modified: llvm/trunk/Makefile.config.in
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.config.in?rev=96910&r1=96909&r2=96910&view=diff
==============================================================================
--- llvm/trunk/Makefile.config.in (original)
+++ llvm/trunk/Makefile.config.in Tue Feb 23 01:56:34 2010
@@ -183,9 +183,6 @@
# want to override the value set by configure.
LLVMGCCDIR := @LLVMGCCDIR@
-# Determine the path where the library executables are
-LLVMGCCLIBEXEC := @LLVMGCCLIBEXEC@
-
# Full pathnames of LLVM C/C++ front-end 'cc1' and 'cc1plus' binaries:
LLVMGCC := @LLVMGCC@
LLVMGXX := @LLVMGXX@
Modified: llvm/trunk/autoconf/configure.ac
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/configure.ac?rev=96910&r1=96909&r2=96910&view=diff
==============================================================================
--- llvm/trunk/autoconf/configure.ac (original)
+++ llvm/trunk/autoconf/configure.ac Tue Feb 23 01:56:34 2010
@@ -1250,8 +1250,6 @@
AC_SUBST(LLVMCC1PLUS,$llvmcc1pluspath)
llvmgccdir=`echo "$llvmcc1path" | sed 's,/libexec/.*,,'`
AC_SUBST(LLVMGCCDIR,$llvmgccdir)
- llvmgcclibexec=`echo "$llvmcc1path" | sed 's,/cc1,,'`
- AC_SUBST(LLVMGCCLIBEXEC,$llvmgcclibexec)
llvmgcclangs=[`"$LLVMGCC" -v --help 2>&1 | grep '^Configured with:' | sed 's/^.*--enable-languages=\([^ ]*\).*/\1/'`]
AC_SUBST(LLVMGCC_LANGS,$llvmgcclangs)
AC_MSG_RESULT([ok])
Modified: llvm/trunk/configure
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/configure?rev=96910&r1=96909&r2=96910&view=diff
==============================================================================
--- llvm/trunk/configure (original)
+++ llvm/trunk/configure Tue Feb 23 01:56:34 2010
@@ -764,7 +764,6 @@
LLVMCC1
LLVMCC1PLUS
LLVMGCCDIR
-LLVMGCCLIBEXEC
LLVMGCC_LANGS
SHLIBEXT
LLVM_PREFIX
@@ -11033,7 +11032,7 @@
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <&1 | grep '^Configured with:' | sed 's/^.*--enable-languages=\([^ ]*\).*/\1/'`
LLVMGCC_LANGS=$llvmgcclangs
@@ -20760,7 +20756,6 @@
LLVMCC1!$LLVMCC1$ac_delim
LLVMCC1PLUS!$LLVMCC1PLUS$ac_delim
LLVMGCCDIR!$LLVMGCCDIR$ac_delim
-LLVMGCCLIBEXEC!$LLVMGCCLIBEXEC$ac_delim
LLVMGCC_LANGS!$LLVMGCC_LANGS$ac_delim
SHLIBEXT!$SHLIBEXT$ac_delim
LLVM_PREFIX!$LLVM_PREFIX$ac_delim
@@ -20783,7 +20778,7 @@
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 86; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 85; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
From daniel at zuster.org Tue Feb 23 01:56:36 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 07:56:36 -0000
Subject: [llvm-commits] [llvm] r96911 - /llvm/trunk/Makefile.rules
Message-ID: <20100223075636.9910B2A6C12C@llvm.org>
Author: ddunbar
Date: Tue Feb 23 01:56:36 2010
New Revision: 96911
URL: http://llvm.org/viewvc/llvm-project?rev=96911&view=rev
Log:
Remove dead LUPGRADE make variable.
Modified:
llvm/trunk/Makefile.rules
Modified: llvm/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.rules?rev=96911&r1=96910&r2=96911&view=diff
==============================================================================
--- llvm/trunk/Makefile.rules (original)
+++ llvm/trunk/Makefile.rules Tue Feb 23 01:56:36 2010
@@ -529,9 +529,6 @@
ifndef LBUGPOINT
LBUGPOINT := $(LLVMToolDir)/bugpoint$(EXEEXT)
endif
-ifndef LUPGRADE
-LUPGRADE := $(LLVMToolDir)/llvm-upgrade$(EXEEXT)
-endif
LLVMGCCWITHPATH := $(LLVMGCC)
LLVMGXXWITHPATH := $(LLVMGXX)
From daniel at zuster.org Tue Feb 23 01:56:41 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 07:56:41 -0000
Subject: [llvm-commits] [llvm] r96913 - in /llvm/trunk: Makefile.rules
test/Makefile.tests
Message-ID: <20100223075641.778612A6C12E@llvm.org>
Author: ddunbar
Date: Tue Feb 23 01:56:41 2010
New Revision: 96913
URL: http://llvm.org/viewvc/llvm-project?rev=96913&view=rev
Log:
Inline and eliminate LLVMG{CC,XX}WITHPATH.
Modified:
llvm/trunk/Makefile.rules
llvm/trunk/test/Makefile.tests
Modified: llvm/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.rules?rev=96913&r1=96912&r2=96913&view=diff
==============================================================================
--- llvm/trunk/Makefile.rules (original)
+++ llvm/trunk/Makefile.rules Tue Feb 23 01:56:41 2010
@@ -529,8 +529,6 @@
ifndef LBUGPOINT
LBUGPOINT := $(LLVMToolDir)/bugpoint$(EXEEXT)
endif
-LLVMGCCWITHPATH := $(LLVMGCC)
-LLVMGXXWITHPATH := $(LLVMGXX)
#--------------------------------------------------------------------
# Adjust to user's request
@@ -702,14 +700,12 @@
$(TargetCommonOpts) $(CompileCommonOpts) $(LD.Flags) $(Strip)
endif
-BCCompile.C = $(LLVMGCCWITHPATH) $(CPP.Flags) $(C.Flags) $(CFLAGS) \
- $(CPPFLAGS) \
+BCCompile.C = $(LLVMGCC) $(CPP.Flags) $(C.Flags) $(CFLAGS) $(CPPFLAGS) \
$(TargetCommonOpts) $(CompileCommonOpts)
Preprocess.C = $(CC) $(CPP.Flags) $(C.Flags) $(CPPFLAGS) \
$(TargetCommonOpts) $(CompileCommonOpts) -E
-BCCompile.CXX = $(LLVMGXXWITHPATH) $(CPP.Flags) $(CXX.Flags) $(CXXFLAGS) \
- $(CPPFLAGS) \
+BCCompile.CXX = $(LLVMGXX) $(CPP.Flags) $(CXX.Flags) $(CXXFLAGS) $(CPPFLAGS) \
$(TargetCommonOpts) $(CompileCommonOpts)
ProgInstall = $(INSTALL) $(Install.StripFlag) -m 0755
Modified: llvm/trunk/test/Makefile.tests
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Makefile.tests?rev=96913&r1=96912&r2=96913&view=diff
==============================================================================
--- llvm/trunk/test/Makefile.tests (original)
+++ llvm/trunk/test/Makefile.tests Tue Feb 23 01:56:41 2010
@@ -49,15 +49,15 @@
# Compile from X.c to Output/X.ll
Output/%.ll: %.c $(LCC1) Output/.dir $(INCLUDES)
- -$(LLVMGCCWITHPATH) $(CPPFLAGS) $(LCCFLAGS) -S $< -o $@
+ -$(LLVMGCC) $(CPPFLAGS) $(LCCFLAGS) -S $< -o $@
# Compile from X.cpp to Output/X.ll
Output/%.ll: %.cpp $(LCC1XX) Output/.dir $(INCLUDES)
- -$(LLVMGXXWITHPATH) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@
+ -$(LLVMGXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@
# Compile from X.cc to Output/X.ll
Output/%.ll: %.cc $(LCC1XX) Output/.dir $(INCLUDES)
- -$(LLVMGXXWITHPATH) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@
+ -$(LLVMGXX) $(CPPFLAGS) $(LCXXFLAGS) -S $< -o $@
# LLVM Assemble from Output/X.ll to Output/X.bc. Output/X.ll must have come
# from GCC output, so use GCCAS.
From daniel at zuster.org Tue Feb 23 01:56:39 2010
From: daniel at zuster.org (Daniel Dunbar)
Date: Tue, 23 Feb 2010 07:56:39 -0000
Subject: [llvm-commits] [llvm] r96912 - in /llvm/trunk/Xcode:
LLVM.xcodeproj/project.pbxproj README.txt
Message-ID: <20100223075639.30D332A6C12D@llvm.org>
Author: ddunbar
Date: Tue Feb 23 01:56:38 2010
New Revision: 96912
URL: http://llvm.org/viewvc/llvm-project?rev=96912&view=rev
Log:
Remove ancient Xcode project, replaced by CMake project.
Removed:
llvm/trunk/Xcode/LLVM.xcodeproj/project.pbxproj
llvm/trunk/Xcode/README.txt
Removed: llvm/trunk/Xcode/LLVM.xcodeproj/project.pbxproj
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/Xcode/LLVM.xcodeproj/project.pbxproj?rev=96911&view=auto
==============================================================================
--- llvm/trunk/Xcode/LLVM.xcodeproj/project.pbxproj (original)
+++ llvm/trunk/Xcode/LLVM.xcodeproj/project.pbxproj (removed)
@@ -1,3303 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 42;
- objects = {
-
-/* Begin PBXAggregateTarget section */
- CF0329BC08D1BE8E0030FD33 /* LLVM full llc */ = {
- isa = PBXAggregateTarget;
- buildConfigurationList = CF0329C708D1BEC40030FD33 /* Build configuration list for PBXAggregateTarget "LLVM full llc" */;
- buildPhases = (
- );
- dependencies = (
- CF0329BE08D1BE970030FD33 /* PBXTargetDependency */,
- CF0329C008D1BE9B0030FD33 /* PBXTargetDependency */,
- );
- name = "LLVM full llc";
- productName = "LLVM full llc";
- };
- CFDF86D00ADE820000D40A3D /* LLVM full llc release */ = {
- isa = PBXAggregateTarget;
- buildConfigurationList = CFDF86D50ADE820000D40A3D /* Build configuration list for PBXAggregateTarget "LLVM full llc release" */;
- buildPhases = (
- );
- dependencies = (
- CFDF86DA0ADE822100D40A3D /* PBXTargetDependency */,
- CFDF86DC0ADE822100D40A3D /* PBXTargetDependency */,
- );
- name = "LLVM full llc release";
- productName = "LLVM full llc";
- };
-/* End PBXAggregateTarget section */
-
-/* Begin PBXContainerItemProxy section */
- CF0329BD08D1BE970030FD33 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = CF0329B608D1BE110030FD33;
- remoteInfo = "LLVM lib";
- };
- CF0329BF08D1BE9B0030FD33 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = CF0329BB08D1BE5D0030FD33;
- remoteInfo = "LLVM llc";
- };
- CFDF86D90ADE822100D40A3D /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = CFDF86BD0ADE819D00D40A3D;
- remoteInfo = "LLVM lib release";
- };
- CFDF86DB0ADE822100D40A3D /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = CFDF86C60ADE81D000D40A3D;
- remoteInfo = "LLVM llc release";
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- 354CF6D10CD299440059AF3E /* DeserializeAPInt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeserializeAPInt.cpp; sourceTree = ""; };
- 354CF6D20CD2994D0059AF3E /* SerializeAPInt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SerializeAPInt.cpp; sourceTree = ""; };
- 35A9CDED0CD0F6AF008ABC1D /* Deserialize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Deserialize.h; sourceTree = ""; };
- 35A9CDEE0CD0F6AF008ABC1D /* Serialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Serialization.h; sourceTree = ""; };
- 35A9CDEF0CD0F6AF008ABC1D /* Serialize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Serialize.h; sourceTree = ""; };
- 35A9CDF00CD0F6D5008ABC1D /* Deserialize.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Deserialize.cpp; sourceTree = ""; };
- 35A9CDF10CD0F6E1008ABC1D /* Serialize.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Serialize.cpp; sourceTree = ""; };
- 35E98A830CBC2ED300C5CDC1 /* DenseSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DenseSet.h; sourceTree = ""; };
- 35E98A840CBC2ED300C5CDC1 /* ImmutableMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImmutableMap.h; sourceTree = ""; };
- 35E98A850CBC2ED300C5CDC1 /* ImmutableSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImmutableSet.h; sourceTree = ""; };
- 754221420D171DFC00DDB61B /* MachineLICM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MachineLICM.cpp; sourceTree = ""; };
- 84115FFE0B66D87400E1293E /* TargetMachOWriterInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TargetMachOWriterInfo.cpp; sourceTree = ""; };
- 84115FFF0B66D89B00E1293E /* PPCMachOWriterInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PPCMachOWriterInfo.cpp; sourceTree = ""; };
- 841160000B66D8AC00E1293E /* PPCMachOWriterInfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PPCMachOWriterInfo.h; sourceTree = ""; };
- 8443EF210B66B62D00959964 /* TargetMachOWriterInfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TargetMachOWriterInfo.h; sourceTree = ""; };
- 9F4B0E5E0D0E02580061F270 /* bitreader_ocaml.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bitreader_ocaml.c; sourceTree = ""; };
- 9F4B0E5F0D0E02580061F270 /* llvm_bitreader.ml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = llvm_bitreader.ml; sourceTree = ""; };
- 9F4B0E600D0E02580061F270 /* llvm_bitreader.mli */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = llvm_bitreader.mli; sourceTree = ""; };
- 9F4B0E8C0D0E05ED0061F270 /* BitReader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BitReader.cpp; sourceTree = ""; };
- 9F4B0E8D0D0E05ED0061F270 /* DeserializeAPFloat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeserializeAPFloat.cpp; sourceTree = ""; };
- 9F502ADB0D1D8CA3007939DF /* executionengine_ocaml.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = executionengine_ocaml.c; sourceTree = ""; };
- 9F502ADC0D1D8CA3007939DF /* llvm_executionengine.ml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = llvm_executionengine.ml; sourceTree = ""; };
- 9F502ADD0D1D8CA3007939DF /* llvm_executionengine.mli */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = llvm_executionengine.mli; sourceTree = ""; };
- 9F502AEC0D1D8CF8007939DF /* executionengine.ml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = executionengine.ml; sourceTree = ""; };
- 9F502B090D1D8D8D007939DF /* ExecutionEngineBindings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExecutionEngineBindings.cpp; sourceTree = ""; };
- 9F5B90CB0D0CE87100CDFDEA /* StringPool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StringPool.cpp; sourceTree = ""; };
- 9F5B90CE0D0CE89300CDFDEA /* AlignOf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AlignOf.h; sourceTree = ""; };
- 9F5B90CF0D0CE89300CDFDEA /* Registry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Registry.h; sourceTree = ""; };
- 9F5B90D00D0CE89300CDFDEA /* StringPool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringPool.h; sourceTree = ""; };
- 9F5B90E70D0DF19100CDFDEA /* BitReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitReader.h; sourceTree = ""; };
- 9F68EB010C77AD02004AA152 /* LoopPass.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = LoopPass.cpp; sourceTree = ""; };
- 9F68EB020C77AD02004AA152 /* MemoryDependenceAnalysis.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryDependenceAnalysis.cpp; sourceTree = ""; };
- 9F68EB060C77AD2C004AA152 /* BitcodeReader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = BitcodeReader.cpp; sourceTree = ""; };
- 9F68EB070C77AD2C004AA152 /* BitcodeReader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = BitcodeReader.h; sourceTree = ""; };
- 9F68EB120C77AD2C004AA152 /* BitcodeWriter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = BitcodeWriter.cpp; sourceTree = ""; };
- 9F68EB130C77AD2C004AA152 /* BitcodeWriterPass.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = BitcodeWriterPass.cpp; sourceTree = ""; };
- 9F68EB250C77AD2C004AA152 /* ValueEnumerator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ValueEnumerator.cpp; sourceTree = ""; };
- 9F68EB260C77AD2C004AA152 /* ValueEnumerator.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ValueEnumerator.h; sourceTree = ""; };
- 9F6B2CC00D0F6E56000F00FD /* bitreader.ml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = bitreader.ml; sourceTree = ""; };
- 9F70401A0D8D732400FD06FF /* llvm_scalar_opts.ml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = llvm_scalar_opts.ml; path = transforms/scalar/llvm_scalar_opts.ml; sourceTree = ""; };
- 9F70401B0D8D732400FD06FF /* llvm_scalar_opts.mli */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = llvm_scalar_opts.mli; path = transforms/scalar/llvm_scalar_opts.mli; sourceTree = ""; };
- 9F70401E0D8D735E00FD06FF /* scalar_opts_ocaml.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = scalar_opts_ocaml.c; path = transforms/scalar/scalar_opts_ocaml.c; sourceTree = ""; };
- 9F7793460C73BC2000551F9C /* CodeGenPrepare.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CodeGenPrepare.cpp; sourceTree = ""; };
- 9F7793470C73BC2000551F9C /* GVN.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GVN.cpp; sourceTree = ""; };
- 9F7793480C73BC2000551F9C /* GVNPRE.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GVNPRE.cpp; sourceTree = ""; };
- 9F7793490C73BC2000551F9C /* LoopIndexSplit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoopIndexSplit.cpp; sourceTree = ""; };
- 9F77934A0C73BC2000551F9C /* LoopRotation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoopRotation.cpp; sourceTree = ""; };
- 9F7793500C73BD1500551F9C /* ELFWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ELFWriter.h; sourceTree = ""; };
- 9F7793510C73BD1500551F9C /* IfConversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IfConversion.cpp; sourceTree = ""; };
- 9F7793520C73BD1500551F9C /* LowerSubregs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LowerSubregs.cpp; sourceTree = ""; };
- 9F7793530C73BD1500551F9C /* MachOWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MachOWriter.h; sourceTree = ""; };
- 9F7793540C73BD1500551F9C /* PostRASchedulerList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PostRASchedulerList.cpp; sourceTree = ""; };
- 9F7793550C73BD1500551F9C /* RegAllocBigBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegAllocBigBlock.cpp; sourceTree = ""; };
- 9F7793560C73BD1500551F9C /* RegisterScavenging.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RegisterScavenging.cpp; sourceTree = ""; };
- 9F7793570C73BD1500551F9C /* SimpleRegisterCoalescing.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SimpleRegisterCoalescing.cpp; sourceTree = ""; };
- 9F7793770C73C48A00551F9C /* StripDeadPrototypes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StripDeadPrototypes.cpp; sourceTree = ""; };
- 9F7793780C73C49A00551F9C /* BasicInliner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = BasicInliner.cpp; sourceTree = ""; };
- 9F7793790C73C49A00551F9C /* CloneLoop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CloneLoop.cpp; sourceTree = ""; };
- 9F77937A0C73C49A00551F9C /* InlineCost.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InlineCost.cpp; sourceTree = ""; };
- 9F77937B0C73C4F400551F9C /* AutoUpgrade.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AutoUpgrade.cpp; path = ../lib/VMCore/AutoUpgrade.cpp; sourceTree = SOURCE_ROOT; };
- 9F77937C0C73C4F400551F9C /* ConstantFold.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ConstantFold.cpp; path = ../lib/VMCore/ConstantFold.cpp; sourceTree = SOURCE_ROOT; };
- 9F77937D0C73C4F400551F9C /* ConstantFold.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ConstantFold.h; path = ../lib/VMCore/ConstantFold.h; sourceTree = SOURCE_ROOT; };
- 9F77937E0C73C53000551F9C /* ParameterAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParameterAttributes.h; sourceTree = ""; };
- 9F7793800C73C54C00551F9C /* Archive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Archive.h; sourceTree = ""; };
- 9F7793810C73C54C00551F9C /* BitCodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitCodes.h; sourceTree = ""; };
- 9F7793820C73C54C00551F9C /* BitstreamReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitstreamReader.h; sourceTree = ""; };
- 9F7793830C73C54C00551F9C /* BitstreamWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BitstreamWriter.h; sourceTree = ""; };
- 9F7793840C73C54C00551F9C /* LLVMBitCodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LLVMBitCodes.h; sourceTree = ""; };
- 9F7793850C73C54C00551F9C /* ReaderWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReaderWriter.h; sourceTree = ""; };
- 9F7793860C73C57100551F9C /* CallingConvLower.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallingConvLower.h; sourceTree = ""; };
- 9F7793870C73C57100551F9C /* ELFRelocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ELFRelocation.h; sourceTree = ""; };
- 9F7793880C73C57100551F9C /* FileWriters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileWriters.h; sourceTree = ""; };
- 9F7793890C73C57100551F9C /* MachORelocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MachORelocation.h; sourceTree = ""; };
- 9F77938A0C73C57100551F9C /* RegisterScavenging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterScavenging.h; sourceTree = ""; };
- 9F7794140C73CB6100551F9C /* Mips.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Mips.h; sourceTree = ""; };
- 9F7794150C73CB6100551F9C /* Mips.td */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Mips.td; sourceTree = ""; };
- 9F7794160C73CB6100551F9C /* MipsAsmPrinter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MipsAsmPrinter.cpp; sourceTree = ""; };
- 9F7794170C73CB6100551F9C /* MipsCallingConv.td */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MipsCallingConv.td; sourceTree = ""; };
- 9F7794180C73CB6100551F9C /* MipsInstrFormats.td */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MipsInstrFormats.td; sourceTree = ""; };
- 9F7794190C73CB6100551F9C /* MipsInstrInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MipsInstrInfo.cpp; sourceTree = ""; };
- 9F77941A0C73CB6100551F9C /* MipsInstrInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MipsInstrInfo.h; sourceTree = ""; };
- 9F77941B0C73CB6100551F9C /* MipsInstrInfo.td */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MipsInstrInfo.td; sourceTree = ""; };
- 9F77941C0C73CB6100551F9C /* MipsISelDAGToDAG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MipsISelDAGToDAG.cpp; sourceTree = ""; };
- 9F77941D0C73CB6100551F9C /* MipsISelLowering.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MipsISelLowering.cpp; sourceTree = ""; };
- 9F77941E0C73CB6100551F9C /* MipsISelLowering.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MipsISelLowering.h; sourceTree = ""; };
- 9F77941F0C73CB6100551F9C /* MipsMachineFunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MipsMachineFunction.h; sourceTree = ""; };
- 9F7794200C73CB6100551F9C /* MipsRegisterInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MipsRegisterInfo.cpp; sourceTree = ""; };
- 9F7794210C73CB6100551F9C /* MipsRegisterInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MipsRegisterInfo.h; sourceTree = ""; };
- 9F7794220C73CB6100551F9C /* MipsRegisterInfo.td */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MipsRegisterInfo.td; sourceTree = ""; };
- 9F7794230C73CB6100551F9C /* MipsSubtarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MipsSubtarget.cpp; sourceTree = ""; };
- 9F7794240C73CB6100551F9C /* MipsSubtarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MipsSubtarget.h; sourceTree = ""; };
- 9F7794250C73CB6100551F9C /* MipsTargetAsmInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MipsTargetAsmInfo.cpp; sourceTree = ""; };
- 9F7794260C73CB6100551F9C /* MipsTargetAsmInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MipsTargetAsmInfo.h; sourceTree = ""; };
- 9F7794270C73CB6100551F9C /* MipsTargetMachine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MipsTargetMachine.cpp; sourceTree = ""; };
- 9F7794280C73CB6100551F9C /* MipsTargetMachine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MipsTargetMachine.h; sourceTree = ""; };
- 9F77942F0C73CB7900551F9C /* MSILWriter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MSILWriter.cpp; sourceTree = ""; };
- 9F7794300C73CB7900551F9C /* MSILWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MSILWriter.h; sourceTree = ""; };
- 9F7794880C73D51000551F9C /* MemoryBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MemoryBuffer.h; sourceTree = ""; };
- 9F7794890C73D51000551F9C /* Streams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Streams.h; sourceTree = " |