[llvm-commits] [llvm] r46962 - /llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
Author: djg Date: Mon Feb 11 12:58:42 2008 New Revision: 46962 URL: http://llvm.org/viewvc/llvm-project?rev=46962&view=rev Log: >From Chris' review: use cast instead of dyn_cast with an assert. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46962&r1=46961&r2=46962&view=diff == --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Mon Feb 11 12:58:42 2008 @@ -1321,8 +1321,7 @@ MVT::ValueType PtrVT = TLI.getPointerTy(); SDOperand StackPtr = DAG.CreateStackTemporary(VT); - FrameIndexSDNode *StackPtrFI = dyn_cast(StackPtr.Val); - assert(StackPtrFI); + FrameIndexSDNode *StackPtrFI = cast(StackPtr.Val); int SPFI = StackPtrFI->getIndex(); // Store the vector. @@ -4759,8 +4758,7 @@ // Create the stack frame object. SDOperand FIPtr = DAG.CreateStackTemporary(SlotVT); - FrameIndexSDNode *StackPtrFI = dyn_cast(FIPtr); - assert(StackPtrFI); + FrameIndexSDNode *StackPtrFI = cast(FIPtr); int SPFI = StackPtrFI->getIndex(); unsigned SrcSize = MVT::getSizeInBits(SrcOp.getValueType()); @@ -4794,8 +4792,7 @@ // then load the whole vector back out. SDOperand StackPtr = DAG.CreateStackTemporary(Node->getValueType(0)); - FrameIndexSDNode *StackPtrFI = dyn_cast(StackPtr); - assert(StackPtrFI); + FrameIndexSDNode *StackPtrFI = cast(StackPtr); int SPFI = StackPtrFI->getIndex(); SDOperand Ch = DAG.getStore(DAG.getEntryNode(), Node->getOperand(0), StackPtr, @@ -6773,8 +6770,7 @@ // Lower to a store/load so that it can be split. // FIXME: this could be improved probably. SDOperand Ptr = DAG.CreateStackTemporary(InOp.getValueType()); - FrameIndexSDNode *FI = dyn_cast(Ptr.Val); - assert(FI && "Expecting CreateStackTemporary to return a frame index.\n"); + FrameIndexSDNode *FI = cast(Ptr.Val); SDOperand St = DAG.getStore(DAG.getEntryNode(), InOp, Ptr, ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46960 - /llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h
Author: djg Date: Mon Feb 11 12:56:50 2008 New Revision: 46960 URL: http://llvm.org/viewvc/llvm-project?rev=46960&view=rev Log: >From Chris' review: change MemOperandSDNode's constructor to pass its argument by reference, rather than by value. Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h Modified: llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h?rev=46960&r1=46959&r2=46960&view=diff == --- llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h (original) +++ llvm/trunk/include/llvm/CodeGen/SelectionDAGNodes.h Mon Feb 11 12:56:50 2008 @@ -1425,7 +1425,7 @@ protected: friend class SelectionDAG; /// Create a MemOperand node - explicit MemOperandSDNode(MemOperand mo) + explicit MemOperandSDNode(const MemOperand &mo) : SDNode(ISD::MEMOPERAND, getSDVTList(MVT::Other)), MO(mo) {} public: ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
Re: [llvm-commits] [llvm-gcc-4.2] r46966 - in /llvm-gcc-4.2/trunk/gcc: config/i386/i386.h config/rs6000/rs6000.h llvm-abi.h
On Feb 11, 2008, at 12:10 PM, Duncan Sands wrote: > Hi Dale, > >> Treat struct { long long: 29; }; as int sized and >> aligned, rather than long long. ABI issue. > > if you look at the DECL_SIZE of the bitfield, rather than > the type size, I think it gives you 29. If so, DECL_SIZE > should simplify things for you. In fact as far as I can > see you should never use the type size for a record field. > For example the struct conversion stuff uses DECL_SIZE everywhere > (except at one point in the field indexing - I have a patch to fix > that which I'll apply at some point). Not using the type size > makes all these "it's a big type shoved in a small place" problems > magically go away. I'm not sure what your suggestion is exactly; the issue isn't the size, it is that the code in HandleArgument for general RECORD_TYPEs is looking at getDeclaredType, not the type in the field. (So what this patch does is use the INTEGER_REGS case instead.) The wide use of getDeclaredType and the comments describing it make me think it would be unsafe in general to change that. It would certainly be more elegant if it works, though. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46967 - /llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
Author: baldrick Date: Mon Feb 11 14:58:28 2008 New Revision: 46967 URL: http://llvm.org/viewvc/llvm-project?rev=46967&view=rev Log: Generalize the handling of call and return arguments, in preparation for apint support. These changes are intended to have no functional effect. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp?rev=46967&r1=46966&r2=46967&view=diff == --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Mon Feb 11 14:58:28 2008 @@ -620,14 +620,19 @@ } // end namespace llvm -/// getCopyFromParts - Create a value that contains the -/// specified legal parts combined into the value they represent. +/// getCopyFromParts - Create a value that contains the specified legal parts +/// combined into the value they represent. If the parts combine to a type +/// larger then ValueVT then AssertOp can be used to specify whether the extra +/// bits are known to be zero (ISD::AssertZext) or sign extended from ValueVT +/// (ISD::AssertSext). Likewise TruncExact is used for floating point types to +/// indicate that the extra bits can be discarded without losing precision. static SDOperand getCopyFromParts(SelectionDAG &DAG, const SDOperand *Parts, unsigned NumParts, MVT::ValueType PartVT, MVT::ValueType ValueVT, - ISD::NodeType AssertOp = ISD::DELETED_NODE) { + ISD::NodeType AssertOp = ISD::DELETED_NODE, + bool TruncExact = false) { if (!MVT::isVector(ValueVT) || NumParts == 1) { SDOperand Val = Parts[0]; @@ -675,7 +680,8 @@ } if (MVT::isFloatingPoint(PartVT) && MVT::isFloatingPoint(ValueVT)) - return DAG.getNode(ISD::FP_ROUND, ValueVT, Val, DAG.getIntPtrConstant(0)); + return DAG.getNode(ISD::FP_ROUND, ValueVT, Val, + DAG.getIntPtrConstant(TruncExact)); if (MVT::getSizeInBits(PartVT) == MVT::getSizeInBits(ValueVT)) return DAG.getNode(ISD::BIT_CONVERT, ValueVT, Val); @@ -723,13 +729,15 @@ ValueVT, &Ops[0], NumIntermediates); } -/// getCopyToParts - Create a series of nodes that contain the -/// specified value split into legal parts. +/// getCopyToParts - Create a series of nodes that contain the specified value +/// split into legal parts. If the parts contain more bits than Val, then, for +/// integers, ExtendKind can be used to specify how to generate the extra bits. static void getCopyToParts(SelectionDAG &DAG, SDOperand Val, SDOperand *Parts, unsigned NumParts, - MVT::ValueType PartVT) { + MVT::ValueType PartVT, + ISD::NodeType ExtendKind = ISD::ANY_EXTEND) { TargetLowering &TLI = DAG.getTargetLoweringInfo(); MVT::ValueType PtrVT = TLI.getPointerTy(); MVT::ValueType ValueVT = Val.getValueType(); @@ -763,7 +771,7 @@ if (PartVT < ValueVT) Val = DAG.getNode(ISD::TRUNCATE, PartVT, Val); else - Val = DAG.getNode(ISD::ANY_EXTEND, PartVT, Val); + Val = DAG.getNode(ExtendKind, PartVT, Val); } else if (MVT::isFloatingPoint(PartVT) && MVT::isFloatingPoint(ValueVT)) { Val = DAG.getNode(ISD::FP_EXTEND, PartVT, Val); @@ -919,38 +927,32 @@ NewValues.push_back(getRoot()); for (unsigned i = 0, e = I.getNumOperands(); i != e; ++i) { SDOperand RetOp = getValue(I.getOperand(i)); - -// If this is an integer return value, we need to promote it ourselves to -// the full width of a register, since getCopyToParts and Legalize will use -// ANY_EXTEND rather than sign/zero. +MVT::ValueType VT = RetOp.getValueType(); + // FIXME: C calling convention requires the return type to be promoted to // at least 32-bit. But this is not necessary for non-C calling conventions. -if (MVT::isInteger(RetOp.getValueType()) && -RetOp.getValueType() < MVT::i64) { - MVT::ValueType TmpVT; - if (TLI.getTypeAction(MVT::i32) == TargetLowering::Promote) -TmpVT = TLI.getTypeToTransformTo(MVT::i32); - else -TmpVT = MVT::i32; - const Function *F = I.getParent()->getParent(); - ISD::NodeType ExtendKind = ISD::ANY_EXTEND; - if (F->paramHasAttr(0, ParamAttr::SExt)) -ExtendKind = ISD::SIGN_EXTEND; - if (F->paramHasAttr(0, ParamAttr::ZExt)) -ExtendKind = ISD::ZERO_EXTEND; - RetOp = DAG.getNode(ExtendKind,
[llvm-commits] [llvm] r46968 - /llvm/trunk/docs/ReleaseNotes.html
Author: pingbak Date: Mon Feb 11 15:05:47 2008 New Revision: 46968 URL: http://llvm.org/viewvc/llvm-project?rev=46968&view=rev Log: Added blurb for CellSPU progress Modified: llvm/trunk/docs/ReleaseNotes.html Modified: llvm/trunk/docs/ReleaseNotes.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/ReleaseNotes.html?rev=46968&r1=46967&r2=46968&view=diff == --- llvm/trunk/docs/ReleaseNotes.html (original) +++ llvm/trunk/docs/ReleaseNotes.html Mon Feb 11 15:05:47 2008 @@ -124,8 +124,13 @@ LLVM 2.2 includes several major new capabilities: -Scott Michel contributed an SPU backend, which generates code for the -vector coprocessors on the Cell processor. (Status?) +A research team led by Scott Michel in the Computer Systems Research +Department at The Aerospace Corporation contributed the CellSPU backend, which +generates code for the vector coprocessors on the Sony/Toshiba/IBM Cell BE +processor. llvm-gcc 4.2 supports CellSPU as a 'configure' target and progress +is being made so that libgcc.a compiles cleanly. Notable pieces still in +development include full 64-bit integer and full double precision floating +point support. Anton and Duncan significantly improved llvm-gcc 4.2 support for the GCC Ada (GNAT) and Fortran (gfortran) front-ends. These front-ends should still be considered ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
Re: [llvm-commits] [llvm-gcc-4.2] r46966 - in /llvm-gcc-4.2/trunk/gcc: config/i386/i386.h config/rs6000/rs6000.h llvm-abi.h
Hi Dale, > Treat struct { long long: 29; }; as int sized and > aligned, rather than long long. ABI issue. if you look at the DECL_SIZE of the bitfield, rather than the type size, I think it gives you 29. If so, DECL_SIZE should simplify things for you. In fact as far as I can see you should never use the type size for a record field. For example the struct conversion stuff uses DECL_SIZE everywhere (except at one point in the field indexing - I have a patch to fix that which I'll apply at some point). Not using the type size makes all these "it's a big type shoved in a small place" problems magically go away. Ciao, Duncan. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46961 - /llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp
Author: djg Date: Mon Feb 11 12:57:43 2008 New Revision: 46961 URL: http://llvm.org/viewvc/llvm-project?rev=46961&view=rev Log: >From Chris' review: fix 80 column violations Modified: llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp Modified: llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp?rev=46961&r1=46960&r2=46961&view=diff == --- llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp (original) +++ llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp Mon Feb 11 12:57:43 2008 @@ -18,11 +18,16 @@ namespace llvm { static ManagedStatic PSVs; - const PseudoSourceValue *PseudoSourceValue::getFixedStack() { return &(*PSVs)[0]; } - const PseudoSourceValue *PseudoSourceValue::getStack() { return &(*PSVs)[1]; } - const PseudoSourceValue *PseudoSourceValue::getGOT() { return &(*PSVs)[2]; } - const PseudoSourceValue *PseudoSourceValue::getConstantPool() { return &(*PSVs)[3]; } - const PseudoSourceValue *PseudoSourceValue::getJumpTable() { return &(*PSVs)[4]; } + const PseudoSourceValue *PseudoSourceValue::getFixedStack() + { return &(*PSVs)[0]; } + const PseudoSourceValue *PseudoSourceValue::getStack() + { return &(*PSVs)[1]; } + const PseudoSourceValue *PseudoSourceValue::getGOT() + { return &(*PSVs)[2]; } + const PseudoSourceValue *PseudoSourceValue::getConstantPool() + { return &(*PSVs)[3]; } + const PseudoSourceValue *PseudoSourceValue::getJumpTable() + { return &(*PSVs)[4]; } static const char *PSVNames[] = { "FixedStack", ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46964 - /llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
Author: djg Date: Mon Feb 11 13:00:34 2008 New Revision: 46964 URL: http://llvm.org/viewvc/llvm-project?rev=46964&view=rev Log: >From Chris' review: use isa instead of explicitly using classof. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp?rev=46964&r1=46963&r2=46964&view=diff == --- llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp Mon Feb 11 13:00:34 2008 @@ -287,7 +287,7 @@ --N; if (N && Node->getOperand(N - 1).getValueType() == MVT::Other) --N; // Ignore chain if it exists. - while (N && MemOperandSDNode::classof(Node->getOperand(N - 1).Val)) + while (N && isa(Node->getOperand(N - 1).Val)) --N; // Ignore MemOperand nodes return N; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46963 - /llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
Author: djg Date: Mon Feb 11 13:00:03 2008 New Revision: 46963 URL: http://llvm.org/viewvc/llvm-project?rev=46963&view=rev Log: >From Chris' review: minor corrections in comments. Modified: llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp?rev=46963&r1=46962&r2=46963&view=diff == --- llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp Mon Feb 11 13:00:03 2008 @@ -267,7 +267,7 @@ /// CountResults - The results of target nodes have register or immediate /// operands first, then an optional chain, and optional flag operands (which do -/// not go into the machine instrs.) +/// not go into the resulting MachineInstr). unsigned ScheduleDAG::CountResults(SDNode *Node) { unsigned N = Node->getNumValues(); while (N && Node->getValueType(N - 1) == MVT::Flag) @@ -279,7 +279,8 @@ /// CountOperands - The inputs to target nodes have any actual inputs first, /// followed by optional memory operands chain operand, then flag operands. -/// Compute the number of actual operands that will go into the machine istr. +/// Compute the number of actual operands that will go into the resulting +/// MachineInstr. unsigned ScheduleDAG::CountOperands(SDNode *Node) { unsigned N = Node->getNumOperands(); while (N && Node->getOperand(N - 1).getValueType() == MVT::Flag) ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46975 - in /llvm/trunk/include/llvm/ADT: ImmutableMap.h ImmutableSet.h
Author: kremenek Date: Mon Feb 11 17:11:12 2008 New Revision: 46975 URL: http://llvm.org/viewvc/llvm-project?rev=46975&view=rev Log: The factories for ImutAVLTree/ImmutableSet/ImmutableMap now take an (optional) BumpPtrAllocator argument to their constructors. This BumpPtrAllocator will be used to allocate trees. If no BumpPtrAllocator is provided, one is created (as before). Modified: llvm/trunk/include/llvm/ADT/ImmutableMap.h llvm/trunk/include/llvm/ADT/ImmutableSet.h Modified: llvm/trunk/include/llvm/ADT/ImmutableMap.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/ImmutableMap.h?rev=46975&r1=46974&r2=46975&view=diff == --- llvm/trunk/include/llvm/ADT/ImmutableMap.h (original) +++ llvm/trunk/include/llvm/ADT/ImmutableMap.h Mon Feb 11 17:11:12 2008 @@ -84,6 +84,9 @@ public: Factory() {} +Factory(BumpPtrAllocator& Alloc) + : F(Alloc) {} + ImmutableMap GetEmptyMap() { return ImmutableMap(F.GetEmptyTree()); } ImmutableMap Add(ImmutableMap Old, key_type_ref K, data_type_ref D) { Modified: llvm/trunk/include/llvm/ADT/ImmutableSet.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/ImmutableSet.h?rev=46975&r1=46974&r2=46975&view=diff == --- llvm/trunk/include/llvm/ADT/ImmutableSet.h (original) +++ llvm/trunk/include/llvm/ADT/ImmutableSet.h Mon Feb 11 17:11:12 2008 @@ -16,6 +16,7 @@ #include "llvm/Support/Allocator.h" #include "llvm/ADT/FoldingSet.h" +#include "llvm/Support/DataTypes.h" #include namespace llvm { @@ -334,15 +335,31 @@ typedef FoldingSet CacheTy; - CacheTy Cache; - BumpPtrAllocator Allocator; + CacheTy Cache; + uintptr_t Allocator; + + bool ownsAllocator() const { +return Allocator & 0x1 ? false : true; + } + + BumpPtrAllocator& getAllocator() const { +return *reinterpret_cast(Allocator & ~0x1); + } //===--===// // Public interface. //===--===// public: - ImutAVLFactory() {} + ImutAVLFactory() +: Allocator(reinterpret_cast(new BumpPtrAllocator())) {} + + ImutAVLFactory(BumpPtrAllocator& Alloc) +: Allocator(reinterpret_cast(&Alloc) | 0x1) {} + + ~ImutAVLFactory() { +if (ownsAllocator()) delete &getAllocator(); + } TreeTy* Add(TreeTy* T, value_type_ref V) { T = Add_internal(V,T); @@ -358,8 +375,6 @@ TreeTy* GetEmptyTree() const { return NULL; } - BumpPtrAllocator& getAllocator() { return Allocator; } - //===--===// // A bunch of quick helper functions used for reasoning // about the properties of trees and their children. @@ -450,7 +465,8 @@ // Create it. // Allocate the new tree node and insert it into the cache. -TreeTy* T = (TreeTy*) Allocator.Allocate(); +BumpPtrAllocator& A = getAllocator(); +TreeTy* T = (TreeTy*) A.Allocate(); new (T) TreeTy(L,R,V,IncrementHeight(L,R)); // We do not insert 'T' into the FoldingSet here. This is because @@ -930,6 +946,9 @@ public: Factory() {} +Factory(BumpPtrAllocator& Alloc) + : F(Alloc) {} + /// GetEmptySet - Returns an immutable set that contains no elements. ImmutableSet GetEmptySet() { return ImmutableSet(F.GetEmptyTree()); } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm-gcc-4.2] r46971 - in /llvm-gcc-4.2/trunk/gcc: config/i386/llvm-i386-target.h llvm-types.cpp
Author: johannes Date: Mon Feb 11 15:53:29 2008 New Revision: 46971 URL: http://llvm.org/viewvc/llvm-project?rev=46971&view=rev Log: Revert 46958 for the moment; it broke things, and there's a better way to solve the problem. Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h llvm-gcc-4.2/trunk/gcc/llvm-types.cpp Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h?rev=46971&r1=46970&r2=46971&view=diff == --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h Mon Feb 11 15:53:29 2008 @@ -83,15 +83,6 @@ } \ } -/* Aggregates containing SSE vectors are aligned at 16 bytes as parameters; - while long double has GCC alignment of 16 bytes (correct for struct layout) - but is only 4 byte aligned as a parameter. So if a union type contains an - SSE vector, use that as the basis for the constructed LLVM struct. */ -#define TARGET_LLVM_COMPARE_UNION_FIELDS(curType, newType, curAlign, newAlign) \ - (newAlign==curAlign && TARGET_SSE && \ - TheTarget->getTargetLowering()->getByValTypeAlignment(newType) > \ - TheTarget->getTargetLowering()->getByValTypeAlignment(curType)) - #ifdef LLVM_ABI_H extern bool llvm_x86_should_pass_aggregate_in_memory(tree, const Type *); Modified: llvm-gcc-4.2/trunk/gcc/llvm-types.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-types.cpp?rev=46971&r1=46970&r2=46971&view=diff == --- llvm-gcc-4.2/trunk/gcc/llvm-types.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-types.cpp Mon Feb 11 15:53:29 2008 @@ -33,7 +33,6 @@ #include "llvm/TypeSymbolTable.h" #include "llvm/Target/TargetData.h" #include "llvm/Target/TargetMachine.h" -#include "llvm/Target/TargetLowering.h" #include "llvm/Assembly/Writer.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/StringExtras.h" @@ -1138,7 +1137,7 @@ // 'sret' functions cannot be 'readnone' or 'readonly'. if (ABIConverter.isStructReturn()) RAttributes &= ~(ParamAttr::ReadNone|ParamAttr::ReadOnly); - + // Compute whether the result needs to be zext or sext'd. RAttributes |= HandleArgumentExtension(TREE_TYPE(type)); @@ -2125,8 +2124,6 @@ /// ConvertUNION - We know that 'type' is a UNION_TYPE or a QUAL_UNION_TYPE: /// convert it to an LLVM type. -/// This involves creating a struct with the right size and alignment. In -/// some cases this is target dependent. const Type *TypeConverter::ConvertUNION(tree type, tree orig_type) { if (const Type *Ty = GET_TYPE_LLVM(type)) { // If we already compiled this type, and if it was not a forward @@ -2173,25 +2170,17 @@ // Select TheTy as union type if it meets one of the following criteria // 1) UnionTy is 0 // 2) TheTy alignment is more then UnionTy -// 3) TheTy size is greater than UnionTy size and TheTy alignment is equal -//to UnionTy +// 3) TheTy size is greater than UnionTy size and TheTy alignment is equal to UnionTy // 4) TheTy size is greater then UnionTy size and TheTy is packed -//FIXME there is no check for packed? bool useTheTy = false; if (UnionTy == 0) useTheTy = true; else if (Align > MaxAlign) useTheTy = true; -#ifdef TARGET_LLVM_COMPARE_UNION_FIELDS -else - useTheTy = TARGET_LLVM_COMPARE_UNION_FIELDS(UnionTy, TheTy, - Align, MaxAlign); -#else else if (MaxAlign == Align && Size > MaxSize) useTheTy = true; -else if (Size > MaxSize)// FIXME really? Seems wrong to lower alignment +else if (Size > MaxSize) useTheTy = true; -#endif if (useTheTy) { UnionTy = TheTy; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/docs/CommandGuide/index.html
Changes in directory llvm-www/releases/2.2/docs/CommandGuide: index.html updated: 1.2 -> 1.3 --- Log message: Fix broken links. --- Diffs of the changes: (+2 -2) index.html |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm-www/releases/2.2/docs/CommandGuide/index.html diff -u llvm-www/releases/2.2/docs/CommandGuide/index.html:1.2 llvm-www/releases/2.2/docs/CommandGuide/index.html:1.3 --- llvm-www/releases/2.2/docs/CommandGuide/index.html:1.2 Tue Feb 12 00:20:24 2008 +++ llvm-www/releases/2.2/docs/CommandGuide/index.html Tue Feb 12 00:23:26 2008 @@ -118,7 +118,7 @@ bugpoint - automatic test-case reducer -llvm-extract - +llvm-extract - extract a function from an LLVM bytecode file llvm-bcanalyzer - @@ -153,7 +153,7 @@ src="http://www.w3.org/Icons/valid-html401"; alt="Valid HTML 4.01!"> http://llvm.org";>LLVM Compiler Infrastructure - Last modified: $Date: 2008/02/12 06:20:24 $ + Last modified: $Date: 2008/02/12 06:23:26 $ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/docs/index.html
Changes in directory llvm-www/releases/2.2/docs: index.html updated: 1.1 -> 1.2 --- Log message: Fix broken links. --- Diffs of the changes: (+20 -20) index.html | 40 1 files changed, 20 insertions(+), 20 deletions(-) Index: llvm-www/releases/2.2/docs/index.html diff -u llvm-www/releases/2.2/docs/index.html:1.1 llvm-www/releases/2.2/docs/index.html:1.2 --- llvm-www/releases/2.2/docs/index.html:1.1 Tue Feb 12 00:05:03 2008 +++ llvm-www/releases/2.2/docs/index.html Tue Feb 12 00:20:21 2008 @@ -69,27 +69,27 @@ Developer Policy - The LLVM project's policy towards developers and their contributions. -LLVM Command Guide - A reference +LLVM Command Guide - A reference manual for the LLVM command line utilities ("man" pages for LLVM tools). Current tools: - llvm-ar, - llvm-as, - llvm-dis, - llvm-extract, - llvm-ld, - llvm-link, - llvm-nm, - llvm-prof, - llvm-ranlib, - opt, - llc, - lli, - llvmc - llvm-gcc, - llvm-g++, - stkrc, - bugpoint, - llvm-bcanalyzer, + llvm-ar, + llvm-as, + llvm-dis, + llvm-extract, + llvm-ld, + llvm-link, + llvm-nm, + llvm-prof, + llvm-ranlib, + opt, + llc, + lli, + llvmc + llvm-gcc, + llvm-g++, + stkrc, + bugpoint, + llvm-bcanalyzer, Frequently Asked Questions - A list of common @@ -270,7 +270,7 @@ src="http://www.w3.org/Icons/valid-html401"; alt="Valid HTML 4.01!"> http://llvm.org";>LLVM Compiler Infrastructure - Last modified: $Date: 2008/02/12 06:05:03 $ + Last modified: $Date: 2008/02/12 06:20:21 $ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/docs/CommandGuide/index.html
Changes in directory llvm-www/releases/2.2/docs/CommandGuide: index.html updated: 1.1 -> 1.2 --- Log message: Fix broken links. --- Diffs of the changes: (+23 -23) index.html | 46 +++--- 1 files changed, 23 insertions(+), 23 deletions(-) Index: llvm-www/releases/2.2/docs/CommandGuide/index.html diff -u llvm-www/releases/2.2/docs/CommandGuide/index.html:1.1 llvm-www/releases/2.2/docs/CommandGuide/index.html:1.2 --- llvm-www/releases/2.2/docs/CommandGuide/index.html:1.1 Tue Feb 12 00:05:11 2008 +++ llvm-www/releases/2.2/docs/CommandGuide/index.html Tue Feb 12 00:20:24 2008 @@ -32,50 +32,50 @@ -llvm-as - +llvm-as - assemble a human-readable .ll file into bytecode -llvm-dis - +llvm-dis - disassemble a bytecode file into a human-readable .ll file -llvm-upgrade - +llvm-upgrade - upgrade LLVM assembly from previous version -opt - +opt - run a series of LLVM-to-LLVM optimizations on a bytecode file -llc - +llc - generate native machine code for a bytecode file -lli - +lli - directly run a program compiled to bytecode using a JIT compiler or interpreter -llvm-link - +llvm-link - link several bytecode files into one -llvm-ar - +llvm-ar - archive bytecode files -llvm-ranlib - +llvm-ranlib - create an index for archives made with llvm-ar -llvm-nm - +llvm-nm - print out the names and types of symbols in a bytecode file -llvm-prof - +llvm-prof - format raw `llvmprof.out' data into a human-readable report -llvmc - +llvmc - generic and configurable compiler driver -llvm-ld - +llvm-ld - general purpose linker with loadable runtime optimization support -llvm-config - +llvm-config - print out LLVM compilation options, libraries, etc. as configured. - llvm2cpp - convert LLVM assembly + llvm2cpp - convert LLVM assembly into the corresponding LLVM C++ API calls to produce it @@ -90,13 +90,13 @@ -llvmgcc - +llvmgcc - GCC-based C front-end for LLVM -llvmg++ - +llvmg++ - GCC-based C++ front-end for LLVM -stkrc - +stkrc - front-end compiler for the Stacker language @@ -115,13 +115,13 @@ -bugpoint - +bugpoint - automatic test-case reducer -llvm-extract - +llvm-extract - extract a function from an LLVM bytecode file -llvm-bcanalyzer - +llvm-bcanalyzer - bytecode analyzer (analyzes the binary encoding itself, not the program it represents) @@ -137,7 +137,7 @@ -tblgen - +tblgen - target description reader and generator @@ -153,7 +153,7 @@ src="http://www.w3.org/Icons/valid-html401"; alt="Valid HTML 4.01!"> http://llvm.org";>LLVM Compiler Infrastructure - Last modified: $Date: 2008/02/12 06:05:11 $ + Last modified: $Date: 2008/02/12 06:20:24 $ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/LICENSE.TXT index.html llvm-2.2.tar.gz llvm-gcc4.0-2.2-ppc-darwin8.11.0.tar.gz llvm-gcc4.0-2.2-x86-darwin8.tar.gz llvm-gcc4.0-2.2-x86-linux-RHEL4.tar.gz llvm-
Changes in directory llvm-www/releases/2.2: LICENSE.TXT added (r1.1) index.html added (r1.1) llvm-2.2.tar.gz added (r1.1) llvm-gcc4.0-2.2-ppc-darwin8.11.0.tar.gz added (r1.1) llvm-gcc4.0-2.2-x86-darwin8.tar.gz added (r1.1) llvm-gcc4.0-2.2-x86-linux-RHEL4.tar.gz added (r1.1) llvm-gcc4.0-2.2.source.tar.gz added (r1.1) llvm-gcc4.2-2.2-ppc-darwin8.11.0.tar.gz added (r1.1) llvm-gcc4.2-2.2-x86-darwin8.tar.gz added (r1.1) llvm-gcc4.2-2.2-x86-linux-RHEL4.tar.gz added (r1.1) llvm-gcc4.2-2.2.source.tar.gz added (r1.1) llvm-test-2.2.tar.gz added (r1.1) --- Log message: Release 2.2 --- Diffs of the changes: (+79 -0) LICENSE.TXT | 72 index.html |7 +++ llvm-2.2.tar.gz |0 llvm-gcc4.0-2.2-ppc-darwin8.11.0.tar.gz |0 llvm-gcc4.0-2.2-x86-darwin8.tar.gz |0 llvm-gcc4.0-2.2-x86-linux-RHEL4.tar.gz |0 llvm-gcc4.0-2.2.source.tar.gz |0 llvm-gcc4.2-2.2-ppc-darwin8.11.0.tar.gz |0 llvm-gcc4.2-2.2-x86-darwin8.tar.gz |0 llvm-gcc4.2-2.2-x86-linux-RHEL4.tar.gz |0 llvm-gcc4.2-2.2.source.tar.gz |0 llvm-test-2.2.tar.gz|0 12 files changed, 79 insertions(+) Index: llvm-www/releases/2.2/LICENSE.TXT diff -c /dev/null llvm-www/releases/2.2/LICENSE.TXT:1.1 *** /dev/null Tue Feb 12 00:05:45 2008 --- llvm-www/releases/2.2/LICENSE.TXT Tue Feb 12 00:03:54 2008 *** *** 0 --- 1,72 + == + LLVM Release License + == + University of Illinois/NCSA + Open Source License + + Copyright (c) 2003-2008 University of Illinois at Urbana-Champaign. + All rights reserved. + + Developed by: + + LLVM Team + + University of Illinois at Urbana-Champaign + + http://llvm.org + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal with + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimers. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimers in the + documentation and/or other materials provided with the distribution. + + * Neither the names of the LLVM Team, University of Illinois at + Urbana-Champaign, nor the names of its contributors may be used to + endorse or promote products derived from this Software without specific + prior written permission. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE + SOFTWARE. + + == + Copyrights and Licenses for Third Party Software Distributed with LLVM: + == + The LLVM software contains code written by third parties. Such software will + have its own individual LICENSE.TXT file in the directory in which it appears. + This file will describe the copyrights, license, and restrictions which apply + to that code. + + The disclaimer of warranty in the University of Illinois Open Source License + applies to all code in the LLVM Distribution, and nothing in any of the + other licenses gives permission to use the names of the LLVM Team or the + University of Illinois to endorse or promote products derived from this + Software. + + The following pieces of software have additional or alternate copyrights, + licenses, and/or restrictions: + + Program Directory + --- - + System Library llvm/lib/System + Compiler Driver llvm/tools/llvmc + Autoconfllvm/autoconf + llvm/projects/ModuleMaker/autoconf + llvm/projects/sample/autoconf + Boost C++ Libraries llvm/include : docs/BOOST_LICENSE_1_0.txt + CellSPU backend llvm/lib/Target/CellSPU/README.txt + + Index: llvm-www/releases/2.2/index.html diff -c /dev/null llvm-www/releases/2.2/index.html:1.1 *** /dev/
[llvm-commits] CVS: llvm-www/releases/2.2/docs/img/Debugging.gif libdeps.gif lines.gif objdeps.gif venusflytrap.jpg
Changes in directory llvm-www/releases/2.2/docs/img: Debugging.gif added (r1.1) libdeps.gif added (r1.1) lines.gif added (r1.1) objdeps.gif added (r1.1) venusflytrap.jpg added (r1.1) --- Log message: Release 2.2 --- Diffs of the changes: (+0 -0) Debugging.gif|0 libdeps.gif |0 lines.gif|0 objdeps.gif |0 venusflytrap.jpg |0 5 files changed Index: llvm-www/releases/2.2/docs/img/Debugging.gif Index: llvm-www/releases/2.2/docs/img/libdeps.gif Index: llvm-www/releases/2.2/docs/img/lines.gif Index: llvm-www/releases/2.2/docs/img/objdeps.gif Index: llvm-www/releases/2.2/docs/img/venusflytrap.jpg ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46994 - /llvm/tags/RELEASE_22/docs/ReleaseNotes.html
Author: tbrethou Date: Tue Feb 12 00:50:19 2008 New Revision: 46994 URL: http://llvm.org/viewvc/llvm-project?rev=46994&view=rev Log: Merge from branch to fix bug. Modified: llvm/tags/RELEASE_22/docs/ReleaseNotes.html Modified: llvm/tags/RELEASE_22/docs/ReleaseNotes.html URL: http://llvm.org/viewvc/llvm-project/llvm/tags/RELEASE_22/docs/ReleaseNotes.html?rev=46994&r1=46993&r2=46994&view=diff == --- llvm/tags/RELEASE_22/docs/ReleaseNotes.html (original) +++ llvm/tags/RELEASE_22/docs/ReleaseNotes.html Tue Feb 12 00:50:19 2008 @@ -545,52 +545,6 @@ Known problems with the C front-end - - - Known problems with the Ada front-end - - - -The llvm-gcc 4.2 Ada compiler works fairly well, however this is not a mature -technology and problems should be expected. - -The Ada front-end currently only builds on x86-32. This is mainly due -to lack of trampoline support (pointers to nested functions) on other platforms, -however it http://llvm.org/PR2006";>also fails to build on x86-64 -which does support trampolines. -The Ada front-end http://llvm.org/PR2007";>fails to bootstrap. -Workaround: configure with --disable-bootstrap. -The c380004 and http://llvm.org/PR2010";>c393010 ACATS tests -fail (c380004 also fails with gcc-4.2 mainline). -Many gcc specific Ada tests continue to crash the compiler. -The -E binder option (exception backtraces) -http://llvm.org/PR1982";>does not work and will result in programs -crashing if an exception is raised. Workaround: do not use -E. -Only discrete types http://llvm.org/PR1981";>are allowed to start -or finish at a non-byte offset in a record. Workaround: do not pack records -or use representation clauses that result in a field of a non-discrete type -starting or finishing in the middle of a byte. -The lli interpreter http://llvm.org/PR2009";>considers 'main' -as generated by the Ada binder to be invalid. -Workaround: hand edit the file to use pointers for argv and envp rather than -integers. -The -fstack-check option http://llvm.org/PR2008";>is ignored. - - - - - - Known problems with the Fortran front-end - - - - - -The llvm-gcc 4.2 gfortran front-end supports a broad range of Fortran code, but does -http://llvm.org/PR1971";>not support EQUIVALENCE yet. - - - Bugs @@ -722,6 +676,53 @@ + + + Known problems with the Ada front-end + + + +The llvm-gcc 4.2 Ada compiler works fairly well, however this is not a mature +technology and problems should be expected. + +The Ada front-end currently only builds on x86-32. This is mainly due +to lack of trampoline support (pointers to nested functions) on other platforms, +however it http://llvm.org/PR2006";>also fails to build on x86-64 +which does support trampolines. +The Ada front-end http://llvm.org/PR2007";>fails to bootstrap. +Workaround: configure with --disable-bootstrap. +The c380004 and http://llvm.org/PR2010";>c393010 ACATS tests +fail (c380004 also fails with gcc-4.2 mainline). +Many gcc specific Ada tests continue to crash the compiler. +The -E binder option (exception backtraces) +http://llvm.org/PR1982";>does not work and will result in programs +crashing if an exception is raised. Workaround: do not use -E. +Only discrete types http://llvm.org/PR1981";>are allowed to start +or finish at a non-byte offset in a record. Workaround: do not pack records +or use representation clauses that result in a field of a non-discrete type +starting or finishing in the middle of a byte. +The lli interpreter http://llvm.org/PR2009";>considers 'main' +as generated by the Ada binder to be invalid. +Workaround: hand edit the file to use pointers for argv and envp rather than +integers. +The -fstack-check option http://llvm.org/PR2008";>is ignored. + + + + + + Known problems with the Fortran front-end + + + + + +The llvm-gcc 4.2 gfortran front-end supports a broad range of Fortran code, but does +http://llvm.org/PR1971";>not support EQUIVALENCE yet. + + + + Additional Information ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/llvm-2.2.tar.gz
Changes in directory llvm-www/releases/2.2: llvm-2.2.tar.gz updated: 1.1 -> 1.2 --- Log message: New source tar ball due to updated release notes. --- Diffs of the changes: (+0 -0) llvm-2.2.tar.gz |0 1 files changed Index: llvm-www/releases/2.2/llvm-2.2.tar.gz ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46992 - /llvm/branches/release_22/docs/ReleaseNotes.html
Author: tbrethou Date: Tue Feb 12 00:28:54 2008 New Revision: 46992 URL: http://llvm.org/viewvc/llvm-project?rev=46992&view=rev Log: Fix bugs section. Modified: llvm/branches/release_22/docs/ReleaseNotes.html Modified: llvm/branches/release_22/docs/ReleaseNotes.html URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_22/docs/ReleaseNotes.html?rev=46992&r1=46991&r2=46992&view=diff == --- llvm/branches/release_22/docs/ReleaseNotes.html (original) +++ llvm/branches/release_22/docs/ReleaseNotes.html Tue Feb 12 00:28:54 2008 @@ -545,52 +545,6 @@ Known problems with the C front-end - - - Known problems with the Ada front-end - - - -The llvm-gcc 4.2 Ada compiler works fairly well, however this is not a mature -technology and problems should be expected. - -The Ada front-end currently only builds on x86-32. This is mainly due -to lack of trampoline support (pointers to nested functions) on other platforms, -however it http://llvm.org/PR2006";>also fails to build on x86-64 -which does support trampolines. -The Ada front-end http://llvm.org/PR2007";>fails to bootstrap. -Workaround: configure with --disable-bootstrap. -The c380004 and http://llvm.org/PR2010";>c393010 ACATS tests -fail (c380004 also fails with gcc-4.2 mainline). -Many gcc specific Ada tests continue to crash the compiler. -The -E binder option (exception backtraces) -http://llvm.org/PR1982";>does not work and will result in programs -crashing if an exception is raised. Workaround: do not use -E. -Only discrete types http://llvm.org/PR1981";>are allowed to start -or finish at a non-byte offset in a record. Workaround: do not pack records -or use representation clauses that result in a field of a non-discrete type -starting or finishing in the middle of a byte. -The lli interpreter http://llvm.org/PR2009";>considers 'main' -as generated by the Ada binder to be invalid. -Workaround: hand edit the file to use pointers for argv and envp rather than -integers. -The -fstack-check option http://llvm.org/PR2008";>is ignored. - - - - - - Known problems with the Fortran front-end - - - - - -The llvm-gcc 4.2 gfortran front-end supports a broad range of Fortran code, but does -http://llvm.org/PR1971";>not support EQUIVALENCE yet. - - - Bugs @@ -722,6 +676,53 @@ + + + Known problems with the Ada front-end + + + +The llvm-gcc 4.2 Ada compiler works fairly well, however this is not a mature +technology and problems should be expected. + +The Ada front-end currently only builds on x86-32. This is mainly due +to lack of trampoline support (pointers to nested functions) on other platforms, +however it http://llvm.org/PR2006";>also fails to build on x86-64 +which does support trampolines. +The Ada front-end http://llvm.org/PR2007";>fails to bootstrap. +Workaround: configure with --disable-bootstrap. +The c380004 and http://llvm.org/PR2010";>c393010 ACATS tests +fail (c380004 also fails with gcc-4.2 mainline). +Many gcc specific Ada tests continue to crash the compiler. +The -E binder option (exception backtraces) +http://llvm.org/PR1982";>does not work and will result in programs +crashing if an exception is raised. Workaround: do not use -E. +Only discrete types http://llvm.org/PR1981";>are allowed to start +or finish at a non-byte offset in a record. Workaround: do not pack records +or use representation clauses that result in a field of a non-discrete type +starting or finishing in the middle of a byte. +The lli interpreter http://llvm.org/PR2009";>considers 'main' +as generated by the Ada binder to be invalid. +Workaround: hand edit the file to use pointers for argv and envp rather than +integers. +The -fstack-check option http://llvm.org/PR2008";>is ignored. + + + + + + Known problems with the Fortran front-end + + + + + +The llvm-gcc 4.2 gfortran front-end supports a broad range of Fortran code, but does +http://llvm.org/PR1971";>not support EQUIVALENCE yet. + + + + Additional Information ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/download.html
Changes in directory llvm-www/releases: download.html updated: 1.47 -> 1.48 --- Log message: 2.2 release --- Diffs of the changes: (+23 -0) download.html | 23 +++ 1 files changed, 23 insertions(+) Index: llvm-www/releases/download.html diff -u llvm-www/releases/download.html:1.47 llvm-www/releases/download.html:1.48 --- llvm-www/releases/download.html:1.47Tue Oct 16 11:28:11 2007 +++ llvm-www/releases/download.html Tue Feb 12 00:59:04 2008 @@ -30,6 +30,29 @@ +Download LLVM 2.2 + + + + +Please read the Release Notes before +downloading: + + + LLVM source code (5.4M) + LLVM Test Suite (53M) + LLVM-GCC 4.2 Front End Binaries for MacOS X/x86 (50M) + LLVM-GCC 4.2 Front End Binaries for MacOS X/PowerPC (49M) + LLVM-GCC 4.2 Front End Binaries for Red Hat Enterprise Linux4/x86 (42M) + LLVM-GCC 4.0 Front End Binaries for MacOS X/x86 (41M) + LLVM-GCC 4.0 Front End Binaries for MacOS X/PowerPC (39M) + LLVM-GCC 4.0 Front End Binaries for Red Hat Enterprise Linux4/x86 (31M) + LLVM-GCC 4.2 Front End Source Code (49M) + LLVM-GCC 4.0 Front End Source Code (36M) + + + + Download LLVM 2.1 ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46993 - /llvm/trunk/docs/ReleaseNotes.html
Author: lattner Date: Tue Feb 12 00:29:45 2008 New Revision: 46993 URL: http://llvm.org/viewvc/llvm-project?rev=46993&view=rev Log: rip out llvm 2.2 stuff in preparation for llvm 2.3 Modified: llvm/trunk/docs/ReleaseNotes.html Modified: llvm/trunk/docs/ReleaseNotes.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/ReleaseNotes.html?rev=46993&r1=46992&r2=46993&view=diff == --- llvm/trunk/docs/ReleaseNotes.html (original) +++ llvm/trunk/docs/ReleaseNotes.html Tue Feb 12 00:29:45 2008 @@ -4,11 +4,11 @@ - LLVM 2.2 Release Notes + LLVM 2.3 Release Notes -LLVM 2.2 Release Notes +LLVM 2.3 Release Notes Introduction @@ -23,6 +23,8 @@ Written by the http://llvm.org";>LLVM Team +THIS IS A WORK IN PROGRESS FOR LLVM 2.3 (currently in +progress on SVN HEAD) @@ -33,7 +35,7 @@ This document contains the release notes for the LLVM compiler -infrastructure, release 2.2. Here we describe the status of LLVM, including +infrastructure, release 2.3. Here we describe the status of LLVM, including major improvements from the previous release and any known problems. All LLVM releases may be downloaded from the http://llvm.org/releases/";>LLVM releases web site. @@ -59,12 +61,12 @@ -This is the thirteenth public release of the LLVM Compiler Infrastructure. -It includes many features and refinements from LLVM 2.1. +This is the fourteenth public release of the LLVM Compiler Infrastructure. +It includes many features and refinements from LLVM 2.2. - -Deprecated features in LLVM 2.2 +Removed features in LLVM 2.3 -This is the last LLVM release to support llvm-gcc 4.0, llvm-upgrade, and -llvmc in its current form. llvm-gcc 4.0 has been replaced with llvm-gcc 4.2. -llvm-upgrade is useful for upgrading llvm 1.9 files to llvm 2.x syntax, but you -can always use an old release to do this. llvmc is currently mostly useless in -llvm 2.2, and will be redesigned or removed in llvm 2.3. +LLVM 2.2 was the last LLVM release to support llvm-gcc 4.0 and llvm-upgrade. +llvm-gcc 4.0 has been replaced with llvm-gcc 4.2. llvm-upgrade was useful for +upgrading llvm 1.9 files to llvm 2.x syntax, but you can always use a previous +llvm release to do this. -llvm-gcc 4.0, llvm-gcc 4.2, and clang +llvm-gcc 4.2 and clang -LLVM 2.2 fully supports both the llvm-gcc 4.0 and llvm-gcc 4.2 front-ends (in -LLVM 2.1, llvm-gcc 4.2 was beta). Since LLVM 2.1, the llvm-gcc 4.2 front-end -has made leaps and bounds and is now at least as good as 4.0 in virtually every -area, and is better in several areas (for example, exception handling -correctness, support for Ada and Fortran, better ABI compatibility, etc). We -strongly recommend that you -migrate from llvm-gcc 4.0 to llvm-gcc 4.2 in this release cycle because -LLVM 2.2 is the last release that will support llvm-gcc 4.0: LLVM 2.3 -will only support the llvm-gcc 4.2 front-end. +LLVM 2.3 fully supports llvm-gcc 4.2 front-end. The http://clang.llvm.org/";>clang project is an effort to build a set of new 'llvm native' front-end technologies for the LLVM optimizer @@ -109,7 +102,7 @@ nicely, and it has advanced source-to-source analysis and transformation capabilities. If you are interested in building source-level tools for C and Objective-C (and eventually C++), you should take a look. However, note that -clang is not an official part of the LLVM 2.2 release. If you are interested in +clang is not an official part of the LLVM 2.3 release. If you are interested in this project, please see its http://clang.llvm.org/";>web site. @@ -121,41 +114,9 @@ -LLVM 2.2 includes several major new capabilities: +LLVM 2.3 includes several major new capabilities: -A research team led by Scott Michel in the Computer Systems Research -Department at The Aerospace Corporation contributed the CellSPU backend, which -generates code for the vector coprocessors on the Sony/Toshiba/IBM Cell BE -processor. llvm-gcc 4.2 supports CellSPU as a 'configure' target and progress -is being made so that libgcc.a compiles cleanly. Notable pieces still in -development include full 64-bit integer and full double precision floating -point support. - -Anton and Duncan significantly improved llvm-gcc 4.2 support for the GCC Ada -(GNAT) and Fortran (gfortran) front-ends. These front-ends should still be considered -experimental however: see the list of known problems. -The release binaries do not contain either front-end: they need to be built from -source (the Ada front-end only builds on x86-32 linux). - -Dale contributed full support for long double on x86/x86-64 (where it is 80 -bits) and on Darwin PPC/PPC64 (where it is 128 bits). In previous LLVM -releases, llvm-gcc silently mapped long double to double. - -Gordon Henriksen rewrote most of the Accurate Garbage Collection code in the code generator, making the -generated code more
[llvm-commits] CVS: llvm-www/releases/2.2/docs/CommandGuide/man/man1/
Changes in directory llvm-www/releases/2.2/docs/CommandGuide/man/man1: --- Log message: Directory /var/cvs/llvm/llvm-www/releases/2.2/docs/CommandGuide/man/man1 added to the repository --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/docs/CommandGuide/html/
Changes in directory llvm-www/releases/2.2/docs/CommandGuide/html: --- Log message: Directory /var/cvs/llvm/llvm-www/releases/2.2/docs/CommandGuide/html added to the repository --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [test-suite] r46990 - /test-suite/tags/RELEASE_22/
Author: tbrethou Date: Mon Feb 11 23:20:47 2008 New Revision: 46990 URL: http://llvm.org/viewvc/llvm-project?rev=46990&view=rev Log: Tag release 2.2 Added: test-suite/tags/RELEASE_22/ - copied from r46989, test-suite/branches/release_22/ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46987 - /llvm/tags/RELEASE_22/
Author: tbrethou Date: Mon Feb 11 23:19:29 2008 New Revision: 46987 URL: http://llvm.org/viewvc/llvm-project?rev=46987&view=rev Log: Tagging release 2.2. Added: llvm/tags/RELEASE_22/ - copied from r46986, llvm/branches/release_22/ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46986 - /llvm/branches/release_22/docs/ReleaseNotes.html
Author: tbrethou Date: Mon Feb 11 23:16:42 2008 New Revision: 46986 URL: http://llvm.org/viewvc/llvm-project?rev=46986&view=rev Log: Merge release notes from mainline. Modified: llvm/branches/release_22/docs/ReleaseNotes.html Modified: llvm/branches/release_22/docs/ReleaseNotes.html URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_22/docs/ReleaseNotes.html?rev=46986&r1=46985&r2=46986&view=diff == --- llvm/branches/release_22/docs/ReleaseNotes.html (original) +++ llvm/branches/release_22/docs/ReleaseNotes.html Mon Feb 11 23:16:42 2008 @@ -4,11 +4,11 @@ - LLVM 2.1 Release Notes + LLVM 2.2 Release Notes -LLVM 2.1 Release Notes +LLVM 2.2 Release Notes Introduction @@ -23,6 +23,7 @@ Written by the http://llvm.org";>LLVM Team + Introduction @@ -32,7 +33,7 @@ This document contains the release notes for the LLVM compiler -infrastructure, release 2.1. Here we describe the status of LLVM, including +infrastructure, release 2.2. Here we describe the status of LLVM, including major improvements from the previous release and any known problems. All LLVM releases may be downloaded from the http://llvm.org/releases/";>LLVM releases web site. @@ -58,122 +59,110 @@ -This is the twelfth public release of the LLVM Compiler Infrastructure. -It includes many features and refinements from LLVM 2.0. +This is the thirteenth public release of the LLVM Compiler Infrastructure. +It includes many features and refinements from LLVM 2.1. + + -New Frontends +Deprecated features in LLVM 2.2 -LLVM 2.1 brings two new beta C front-ends. First, a new version of llvm-gcc -based on GCC 4.2, innovatively called "llvm-gcc-4.2". This promises to bring -FORTRAN and Ada support to LLVM as well as features like atomic builtins and -OpenMP. None of these actually work yet, but don't let that stop you checking -it out! - -Second, LLVM now includes its own native C and Objective-C front-end (C++ is -in progress, but is not very far along) code named "http://clang.llvm.org/";>clang". This front-end has a number of great -features, primarily aimed at source-level analysis and speeding up compile-time. -At this point though, the LLVM Code Generator component is still very early in -development, so it's mostly useful for people looking to build source-level -analysis tools or source-to-source translators. +This is the last LLVM release to support llvm-gcc 4.0, llvm-upgrade, and +llvmc in its current form. llvm-gcc 4.0 has been replaced with llvm-gcc 4.2. +llvm-upgrade is useful for upgrading llvm 1.9 files to llvm 2.x syntax, but you +can always use an old release to do this. llvmc is currently mostly useless in +llvm 2.2, and will be redesigned or removed in llvm 2.3. -Optimizer Improvements +llvm-gcc 4.0, llvm-gcc 4.2, and clang -Some of the most noticable feature improvements this release have been in the -optimizer, speeding it up and making it more aggressive. For example: - - - -Owen Anderson wrote the new MemoryDependenceAnalysis pass, which provides -a lazy, caching layer on top of AliasAnalysis. He then used it to rewrite -DeadStoreElimination which resulted in significantly better compile time in -common cases, -Owen implemented the new GVN pass, which is also based on -MemoryDependenceAnalysis. This pass replaces GCSE/LoadVN in the standard -set of passes, providing more aggressive optimization at a some-what -improved compile-time cost. -Owen implemented GVN-PRE, a partial redundancy elimination algorithm that -shares some details with the new GVN pass. It is still in need of compile -time tuning, and is not turned on by default. -Devang merged ETForest and DomTree into a single easier to use data -structure. This makes it more obvious which datastructure to choose -(because there is only one) and makes the compiler more memory and time -efficient (less stuff to keep up-to-date). -Nick Lewycky improved loop trip count analysis to handle many more common -cases. - - +LLVM 2.2 fully supports both the llvm-gcc 4.0 and llvm-gcc 4.2 front-ends (in +LLVM 2.1, llvm-gcc 4.2 was beta). Since LLVM 2.1, the llvm-gcc 4.2 front-end +has made leaps and bounds and is now at least as good as 4.0 in virtually every +area, and is better in several areas (for example, exception handling +correctness, support for Ada and Fortran, better ABI compatibility, etc). We +strongly recommend that you +migrate from llvm-gcc 4.0 to llvm-gcc 4.2 in this release cycle because +LLVM 2.2 is the last release that will support llvm-gcc 4.0: LLVM 2.3 +will only support the llvm-gcc 4.2 front-end. + +The http://clang.llvm.org/";>clang project is an effort to build +a set of new 'llvm native' front-end technologies for the LLVM optimizer +and code generator. Currently, its C and Objective-C support is maturing +nicel
[llvm-commits] CVS: llvm-www/releases/index.html
Changes in directory llvm-www/releases: index.html updated: 1.41 -> 1.42 --- Log message: 2.2 release --- Diffs of the changes: (+4 -1) index.html |5 - 1 files changed, 4 insertions(+), 1 deletion(-) Index: llvm-www/releases/index.html diff -u llvm-www/releases/index.html:1.41 llvm-www/releases/index.html:1.42 --- llvm-www/releases/index.html:1.41 Fri Sep 28 10:42:04 2007 +++ llvm-www/releases/index.htmlTue Feb 12 01:01:28 2008 @@ -15,7 +15,7 @@ -LLVM is distributed under the University of +LLVM is distributed under the University of Illinois Open Source License, an http://www.opensource.org/licenses/UoI-NCSA.php";>OSI-approved license. @@ -39,6 +39,8 @@ Always - Anonymous SVN access; release notes. +11 Feb 2008 - 2.2 release download; release notes. 26 Sep 2007 - 2.1 release download; release notes. 23 May 2007 - 2.0 release download; http://llvm.org/docs/";>Current LLVM SVN HEAD documentation +Documentation for LLVM 2.2 Documentation for LLVM 2.1 Documentation for LLVM 2.0 Documentation for LLVM 1.9 ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/download.html
Changes in directory llvm-www/releases: download.html updated: 1.48 -> 1.49 --- Log message: Fix typo. --- Diffs of the changes: (+1 -1) download.html |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm-www/releases/download.html diff -u llvm-www/releases/download.html:1.48 llvm-www/releases/download.html:1.49 --- llvm-www/releases/download.html:1.48Tue Feb 12 00:59:04 2008 +++ llvm-www/releases/download.html Tue Feb 12 01:01:14 2008 @@ -45,7 +45,7 @@ LLVM-GCC 4.2 Front End Binaries for MacOS X/PowerPC (49M) LLVM-GCC 4.2 Front End Binaries for Red Hat Enterprise Linux4/x86 (42M) LLVM-GCC 4.0 Front End Binaries for MacOS X/x86 (41M) - LLVM-GCC 4.0 Front End Binaries for MacOS X/PowerPC (39M) + LLVM-GCC 4.0 Front End Binaries for MacOS X/PowerPC (39M) LLVM-GCC 4.0 Front End Binaries for Red Hat Enterprise Linux4/x86 (31M) LLVM-GCC 4.2 Front End Source Code (49M) LLVM-GCC 4.0 Front End Source Code (36M) ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/docs/ReleaseNotes.html
Changes in directory llvm-www/releases/2.2/docs: ReleaseNotes.html updated: 1.1 -> 1.2 --- Log message: Update release notes. --- Diffs of the changes: (+48 -47) ReleaseNotes.html | 95 +++--- 1 files changed, 48 insertions(+), 47 deletions(-) Index: llvm-www/releases/2.2/docs/ReleaseNotes.html diff -u llvm-www/releases/2.2/docs/ReleaseNotes.html:1.1 llvm-www/releases/2.2/docs/ReleaseNotes.html:1.2 --- llvm-www/releases/2.2/docs/ReleaseNotes.html:1.1Tue Feb 12 00:05:03 2008 +++ llvm-www/releases/2.2/docs/ReleaseNotes.htmlTue Feb 12 01:02:12 2008 @@ -545,52 +545,6 @@ Known problems with the C front-end - - - Known problems with the Ada front-end - - - -The llvm-gcc 4.2 Ada compiler works fairly well, however this is not a mature -technology and problems should be expected. - -The Ada front-end currently only builds on x86-32. This is mainly due -to lack of trampoline support (pointers to nested functions) on other platforms, -however it http://llvm.org/PR2006";>also fails to build on x86-64 -which does support trampolines. -The Ada front-end http://llvm.org/PR2007";>fails to bootstrap. -Workaround: configure with --disable-bootstrap. -The c380004 and http://llvm.org/PR2010";>c393010 ACATS tests -fail (c380004 also fails with gcc-4.2 mainline). -Many gcc specific Ada tests continue to crash the compiler. -The -E binder option (exception backtraces) -http://llvm.org/PR1982";>does not work and will result in programs -crashing if an exception is raised. Workaround: do not use -E. -Only discrete types http://llvm.org/PR1981";>are allowed to start -or finish at a non-byte offset in a record. Workaround: do not pack records -or use representation clauses that result in a field of a non-discrete type -starting or finishing in the middle of a byte. -The lli interpreter http://llvm.org/PR2009";>considers 'main' -as generated by the Ada binder to be invalid. -Workaround: hand edit the file to use pointers for argv and envp rather than -integers. -The -fstack-check option http://llvm.org/PR2008";>is ignored. - - - - - - Known problems with the Fortran front-end - - - - - -The llvm-gcc 4.2 gfortran front-end supports a broad range of Fortran code, but does -http://llvm.org/PR1971";>not support EQUIVALENCE yet. - - - Bugs @@ -722,6 +676,53 @@ + + + Known problems with the Ada front-end + + + +The llvm-gcc 4.2 Ada compiler works fairly well, however this is not a mature +technology and problems should be expected. + +The Ada front-end currently only builds on x86-32. This is mainly due +to lack of trampoline support (pointers to nested functions) on other platforms, +however it http://llvm.org/PR2006";>also fails to build on x86-64 +which does support trampolines. +The Ada front-end http://llvm.org/PR2007";>fails to bootstrap. +Workaround: configure with --disable-bootstrap. +The c380004 and http://llvm.org/PR2010";>c393010 ACATS tests +fail (c380004 also fails with gcc-4.2 mainline). +Many gcc specific Ada tests continue to crash the compiler. +The -E binder option (exception backtraces) +http://llvm.org/PR1982";>does not work and will result in programs +crashing if an exception is raised. Workaround: do not use -E. +Only discrete types http://llvm.org/PR1981";>are allowed to start +or finish at a non-byte offset in a record. Workaround: do not pack records +or use representation clauses that result in a field of a non-discrete type +starting or finishing in the middle of a byte. +The lli interpreter http://llvm.org/PR2009";>considers 'main' +as generated by the Ada binder to be invalid. +Workaround: hand edit the file to use pointers for argv and envp rather than +integers. +The -fstack-check option http://llvm.org/PR2008";>is ignored. + + + + + + Known problems with the Fortran front-end + + + + + +The llvm-gcc 4.2 gfortran front-end supports a broad range of Fortran code, but does +http://llvm.org/PR1971";>not support EQUIVALENCE yet. + + + + Additional Information @@ -754,7 +755,7 @@ src="http://www.w3.org/Icons/valid-html401"; alt="Valid HTML 4.01!"> http://llvm.org/";>LLVM Compiler Infrastructure - Last modified: $Date: 2008/02/12 06:05:03 $ + Last modified: $Date: 2008/02/12 07:02:12 $ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm-gcc-4.2] r46966 - in /llvm-gcc-4.2/trunk/gcc: config/i386/i386.h config/rs6000/rs6000.h llvm-abi.h
Author: johannes Date: Mon Feb 11 13:45:46 2008 New Revision: 46966 URL: http://llvm.org/viewvc/llvm-project?rev=46966&view=rev Log: Treat struct { long long: 29; }; as int sized and aligned, rather than long long. ABI issue. Remove nonfunctional target-specific versions of LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS. Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.h llvm-gcc-4.2/trunk/gcc/config/rs6000/rs6000.h llvm-gcc-4.2/trunk/gcc/llvm-abi.h Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/i386.h?rev=46966&r1=46965&r2=46966&view=diff == --- llvm-gcc-4.2/trunk/gcc/config/i386/i386.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/i386.h Mon Feb 11 13:45:46 2008 @@ -3744,13 +3744,6 @@ /* LLVM ABI definition macros. */ -/* LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS - Return true if we should - * "bitconvert" the specified aggregate tree type info a sequence of integer - * values. - */ -#define LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS(type) \ - !isSingleElementStructOrArray(type) - /* When -m64 is specified, set the architecture to x86_64-os-blah even if the * compiler was configured for i[3456]86-os-blah. */ Modified: llvm-gcc-4.2/trunk/gcc/config/rs6000/rs6000.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/rs6000/rs6000.h?rev=46966&r1=46965&r2=46966&view=diff == --- llvm-gcc-4.2/trunk/gcc/config/rs6000/rs6000.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/rs6000/rs6000.h Mon Feb 11 13:45:46 2008 @@ -3458,13 +3458,6 @@ F.AddFeature("64bit", TARGET_POWERPC64); \ } -/* GCC passes single-element structs and arrays in registers. Other structs - * are forced into integer registers, e.g. complex float is passed in two - * 32-bit GPR's. - */ -#define LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS(type) \ - !isSingleElementStructOrArray(type) - /* When -m64 is specified, set the architecture to powerpc64-os-blah even if the * compiler was configured for powerpc-os-blah. */ Modified: llvm-gcc-4.2/trunk/gcc/llvm-abi.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-abi.h?rev=46966&r1=46965&r2=46966&view=diff == --- llvm-gcc-4.2/trunk/gcc/llvm-abi.h (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-abi.h Mon Feb 11 13:45:46 2008 @@ -87,8 +87,9 @@ /// isSingleElementStructOrArray - If this is (recursively) a structure with one /// field or an array with one element, return the field type, otherwise return -/// null. -static tree isSingleElementStructOrArray(tree type) { +/// null. If rejectFatBitField, and the single element is a bitfield of a type +/// that's bigger than the struct, return null anyway. +static tree isSingleElementStructOrArray(tree type, bool rejectFatBitfield) { // Scalars are good. if (!isAggregateTreeType(type)) return type; @@ -106,17 +107,22 @@ for (tree Field = TYPE_FIELDS(type); Field; Field = TREE_CHAIN(Field)) if (TREE_CODE(Field) == FIELD_DECL) { -if (!FoundField) +if (!FoundField) { + if (rejectFatBitfield && + TREE_CODE(TYPE_SIZE(type)) == INTEGER_CST && + TREE_INT_CST_LOW(TYPE_SIZE(getDeclaredType(Field))) > + TREE_INT_CST_LOW(TYPE_SIZE(type))) +return 0; FoundField = getDeclaredType(Field); -else +} else return 0; // More than one field. } -return FoundField ? isSingleElementStructOrArray(FoundField) : 0; +return FoundField ? isSingleElementStructOrArray(FoundField, false) : 0; case ARRAY_TYPE: const ArrayType *Ty = dyn_cast(ConvertType(type)); if (!Ty || Ty->getNumElements() != 1) return 0; -return isSingleElementStructOrArray(TREE_TYPE(type)); +return isSingleElementStructOrArray(TREE_TYPE(type), false); } } @@ -151,10 +157,12 @@ // value should be passed in integer registers. By default, we do this for all // values that are not single-element structs. This ensures that things like // {short,short} are passed in one 32-bit chunk, not as two arguments (which -// would often be 64-bits). +// would often be 64-bits). We also do it for single-element structs when the +// single element is a bitfield of a type bigger than the struct; the code +// for field-by-field struct passing does not handle this one right. #ifndef LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS #define LLVM_SHOULD_PASS_AGGREGATE_IN_INTEGER_REGS(X) \ - !isSingleElementStructOrArray(X) + !isSingleElementStructOrArray(X, true) #endif /// DefaultABI - This class implements the default LLVM ABI where structures are @@ -184,7 +192,7 @@ // FIXME: this is a hack around returning 'complex double' by-val
[llvm-commits] CVS: llvm-www/www-index.html
Changes in directory llvm-www: www-index.html updated: 1.152 -> 1.153 --- Log message: 2.2 release. --- Diffs of the changes: (+3 -9) www-index.html | 12 +++- 1 files changed, 3 insertions(+), 9 deletions(-) Index: llvm-www/www-index.html diff -u llvm-www/www-index.html:1.152 llvm-www/www-index.html:1.153 --- llvm-www/www-index.html:1.152 Sun Feb 10 12:10:42 2008 +++ llvm-www/www-index.html Tue Feb 12 01:06:32 2008 @@ -102,9 +102,9 @@ Latest LLVM Release! - Sep 26, 2007: LLVM 2.1 is now available + Feb 11, 2008: LLVM 2.2 is now available for download! LLVM is publicly available under an open source License. Also, you might want to + href="releases/2.2/LICENSE.TXT">License. Also, you might want to check out the new features in SVN that will appear in the next LLVM release. If you want them early, download LLVM through @@ -116,14 +116,8 @@ Upcoming Releases - LLVM 2.2 release schedule: + LLVM 2.3 release schedule (coming soon) -Jan 16, 2008: Branch creation/Code Freeze (9PM PST). -Jan 24, 2008: First round of pre-release testing begins. -Feb 1, 2008: Pre-release testing ends. -Feb 3, 2008: Second round of pre-release testing begins. -Feb 10, 2008: Pre-release testing ends. -Feb 11, 2008: 2.2 released. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm-gcc-4.2] r46983 - in /llvm-gcc-4.2/trunk/gcc: builtin-types.def builtins.def llvm-convert.cpp
Author: tbrethou Date: Mon Feb 11 20:50:24 2008 New Revision: 46983 URL: http://llvm.org/viewvc/llvm-project?rev=46983&view=rev Log: Port __builtin_annotation from llvm-gcc4.0. This is similar to llvm.var.annotation but is applied to expressions. Modified: llvm-gcc-4.2/trunk/gcc/builtin-types.def llvm-gcc-4.2/trunk/gcc/builtins.def llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Modified: llvm-gcc-4.2/trunk/gcc/builtin-types.def URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/builtin-types.def?rev=46983&r1=46982&r2=46983&view=diff == --- llvm-gcc-4.2/trunk/gcc/builtin-types.def (original) +++ llvm-gcc-4.2/trunk/gcc/builtin-types.def Mon Feb 11 20:50:24 2008 @@ -303,6 +303,10 @@ DEF_FUNCTION_TYPE_2 (BT_FN_I16_VPTR_I16, BT_I16, BT_VOLATILE_PTR, BT_I16) DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_LONGPTR_LONGPTR, BT_BOOL, BT_PTR_LONG, BT_PTR_LONG) +/* APPLE LOCAL begin LLVM */ +DEF_FUNCTION_TYPE_2 (BT_FN_UINT_UINT_CONST_STRING, + BT_UINT, BT_UINT, BT_CONST_STRING) +/* APPLE LOCAL end LLVM */ DEF_FUNCTION_TYPE_3 (BT_FN_STRING_STRING_CONST_STRING_SIZE, BT_STRING, BT_STRING, BT_CONST_STRING, BT_SIZE) Modified: llvm-gcc-4.2/trunk/gcc/builtins.def URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/builtins.def?rev=46983&r1=46982&r2=46983&view=diff == --- llvm-gcc-4.2/trunk/gcc/builtins.def (original) +++ llvm-gcc-4.2/trunk/gcc/builtins.def Mon Feb 11 20:50:24 2008 @@ -691,6 +691,10 @@ DEF_EXT_LIB_BUILTIN(BUILT_IN__EXIT, "_exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST) DEF_C99_BUILTIN(BUILT_IN__EXIT2, "_Exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST) +/* APPLE LOCAL begin LLVM */ +DEF_GCC_BUILTIN(BUILT_IN_ANNOTATION, "annotation", BT_FN_UINT_UINT_CONST_STRING, ATTR_NULL) +/* APPLE LOCAL end LLVM */ + /* Implementing nested functions. */ DEF_BUILTIN_STUB (BUILT_IN_INIT_TRAMPOLINE, "__builtin_init_trampoline") /* LLVM local deleted 1 line */ Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=46983&r1=46982&r2=46983&view=diff == --- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Mon Feb 11 20:50:24 2008 @@ -4259,7 +4259,38 @@ Builder.CreateUnreachable(); EmitBlock(new BasicBlock("")); return true; - + + // Convert annotation built-in to llvm.annotation intrinsic. + case BUILT_IN_ANNOTATION: { + +// Get file and line number +location_t locus = EXPR_LOCATION (exp); +Constant *lineNo = ConstantInt::get(Type::Int32Ty, locus.line); +Constant *file = ConvertMetadataStringToGV(locus.file); +const Type *SBP= PointerType::getUnqual(Type::Int8Ty); +file = ConstantExpr::getBitCast(file, SBP); + +// Get arguments. +tree arglist = TREE_OPERAND(exp, 1); +Value *ExprVal = Emit(TREE_VALUE(arglist), 0); +const Type *Ty = ExprVal->getType(); +Value *StrVal = Emit(TREE_VALUE(TREE_CHAIN(arglist)), 0); + +SmallVector Args; +Args.push_back(ExprVal); +Args.push_back(StrVal); +Args.push_back(file); +Args.push_back(lineNo); + +assert(Ty && "llvm.annotation arg type may not be null"); +Result = Builder.CreateCall(Intrinsic::getDeclaration(TheModule, + Intrinsic::annotation, + &Ty, + 1), +Args.begin(), Args.end()); +return true; + } + #if 1 // FIXME: Should handle these GCC extensions eventually. case BUILT_IN_APPLY_ARGS: case BUILT_IN_APPLY: ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46982 - /llvm/branches/release_22/docs/GettingStarted.html
Author: tbrethou Date: Mon Feb 11 20:43:50 2008 New Revision: 46982 URL: http://llvm.org/viewvc/llvm-project?rev=46982&view=rev Log: release tag. Modified: llvm/branches/release_22/docs/GettingStarted.html Modified: llvm/branches/release_22/docs/GettingStarted.html URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_22/docs/GettingStarted.html?rev=46982&r1=46981&r2=46982&view=diff == --- llvm/branches/release_22/docs/GettingStarted.html (original) +++ llvm/branches/release_22/docs/GettingStarted.html Mon Feb 11 20:43:50 2008 @@ -710,6 +710,7 @@ subdirectories of the 'tags' directory: +Release 2.2: RELEASE_22 Release 2.1: RELEASE_21 Release 2.0: RELEASE_20 Release 1.9: RELEASE_19 ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46996 - /llvm/trunk/docs/TableGenFundamentals.html
Author: void Date: Tue Feb 12 01:09:05 2008 New Revision: 46996 URL: http://llvm.org/viewvc/llvm-project?rev=46996&view=rev Log: Fix validation errors: di -> dt. Modified: llvm/trunk/docs/TableGenFundamentals.html Modified: llvm/trunk/docs/TableGenFundamentals.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/TableGenFundamentals.html?rev=46996&r1=46995&r2=46996&view=diff == --- llvm/trunk/docs/TableGenFundamentals.html (original) +++ llvm/trunk/docs/TableGenFundamentals.html Tue Feb 12 01:09:05 2008 @@ -304,36 +304,36 @@ -bit +bit A 'bit' is a boolean value that can hold either 0 or 1. -int +int The 'int' type represents a simple 32-bit integer value, such as 5. -string +string The 'string' type represents an ordered sequence of characters of arbitrary length. -bits+bits A 'bits' type is an arbitrary, but fixed, size integer that is broken up into individual bits. This type is useful because it can handle some bits being defined while others are undefined. -list +list This type represents a list whose elements are some other type. The contained type is arbitrary: it can even be another list type. -Class type +Class type Specifying a class name in a type context means that the defined value must be a subclass of the specified class. This is useful in conjunction with the list type, for example, to constrain the elements of the list to a common base class (e.g., a list can only contain definitions derived from the "Register" class). -dag +dag This type represents a nestable directed graph of elements. -code +code This represents a big hunk of text. NOTE: I don't remember why this is distinct from string! @@ -359,45 +359,45 @@ -? +? uninitialized field -0b1001011 +0b1001011 binary integer value -07654321 +07654321 octal integer value (indicated by a leading 0) -7 +7 decimal integer value -0x7F +0x7F hexadecimal integer value -"foo" +"foo" string value -[{ ... }] +[{ ... }] code fragment -[ X, Y, Z ] +[ X, Y, Z ] list value. -{ a, b, c } +{ a, b, c } initializer for a "bits<3>" value -value +value value reference -value{17} +value{17} access to one bit of a value -value{15-17} +value{15-17} access to multiple bits of a value -DEF +DEF reference to a record definition -CLASS +CLASS reference to a new anonymous definition of CLASS with the specified template arguments. -X.Y +X.Y reference to the subfield of a value -list[4-7,17,2-3] +list[4-7,17,2-3] A slice of the 'list' list, including elements 4,5,6,7,17,2, and 3 from it. Elements may be included multiple times. -(DEF a, b) +(DEF a, b) a dag value. The first element is required to be a record definition, the remaining elements in the list may be arbitrary other values, including nested `dag' values. -!strconcat(a, b) +!strconcat(a, b) A string value that is the result of concatenating the 'a' and 'b' strings. @@ -747,7 +747,7 @@ http://jigsaw.w3.org/css-validator/check/referer";>http://jigsaw.w3.org/css-validator/images/vcss"; alt="Valid CSS!"> http://validator.w3.org/check/referer";>http://www.w3.org/Icons/valid-html401"; alt="Valid HTML 4.01!" /> + src="http://www.w3.org/Icons/valid-html401"; alt="Valid HTML 4.01!"> mailto:[EMAIL PROTECTED]">Chris Lattner http://llvm.org";>LLVM Compiler Infrastructure ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46979 - /llvm/trunk/lib/Target/IA64/README
Author: sampo Date: Mon Feb 11 17:47:56 2008 New Revision: 46979 URL: http://llvm.org/viewvc/llvm-project?rev=46979&view=rev Log: Stuff noticed while grepping code Modified: llvm/trunk/lib/Target/IA64/README Modified: llvm/trunk/lib/Target/IA64/README URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/IA64/README?rev=46979&r1=46978&r2=46979&view=diff == --- llvm/trunk/lib/Target/IA64/README (original) +++ llvm/trunk/lib/Target/IA64/README Mon Feb 11 17:47:56 2008 @@ -1,59 +1,11 @@ -*** README for the LLVM IA64 Backend "Version 0.01" - March 18, 2005 -*** Quote for this version: - - "Kaori and Hitomi are naughty!!" - - -Congratulations, you have found: - - -* @@@ @@@ @@@ @@@ @@ * -* @@@ @@@ @@@ @@@ @@@* -* @@! @@! @@! @@@ @@! @@! @@!* -* [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] @!@ [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED]* -* @!! @!! @!@ [EMAIL PROTECTED] @!! !!@ @!@* -* !!! !!! [EMAIL PROTECTED] !!! [EMAIL PROTECTED] ! [EMAIL PROTECTED]* -* !!: !!: :!: !!: !!: !!:* -* :!: :!: ::!!:! :!: :!:* -* :: :: ::: :: * -* : :: : : : :: : : : : : * -* * -* * -* @@ @@@ @@@ @@@ @@ @@ @@@ * -* @@@ @@@ @@@ * -* @@! @@@ @@[EMAIL PROTECTED]@@@ @@! @@! @@@ !@@ @@[EMAIL PROTECTED] * -* [EMAIL PROTECTED] @!@ [EMAIL PROTECTED]@[EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] @!@ [EMAIL PROTECTED] [EMAIL PROTECTED]@! * -* @!@ [EMAIL PROTECTED] @!@ [EMAIL PROTECTED] !!@ @[EMAIL PROTECTED]@[EMAIL PROTECTED] !!@@[EMAIL PROTECTED]@!! @!! * -* [EMAIL PROTECTED] !!! [EMAIL PROTECTED] !!! !!! [EMAIL PROTECTED] @[EMAIL PROTECTED] !!! [EMAIL PROTECTED] * -* !!: !!! !!: !!! !!: !!: !!! !:! !:! :!!:!:!!: * -* :!: !:! :!: !:! :!: :!: !:! :!: !:! !:::!!::: * -* : :: :: :::: :: ::: ::: ::: * -* : : : :::: : : : :: : :::: * -* * - -* Bow down, bow down, before the power of IA64! Or be crushed, * -* be crushed, by its jolly registers of doom!! * - - -DEVELOPMENT PLAN: - - _ you are 2005 maybe 2005 20062006 and - / here| | | beyond - vv v v| - v -CLEAN UPADD INSTRUCTION ADD PLAY WITH -INSTRUCTION --> SCHEDULING AND --> JIT-->DYNAMIC --> FUTURE WORK -SELECTION BUNDLINGSUPPORT REOPTIMIZATION - -DISCLAIMER AND PROMISE: - -As of the time of this release, you are probably better off using Intel C/C++ -or GCC. The performance of the code emitted right now is, in a word, -terrible. Check back in a few months - the story will be different then, -I guarantee it. - TODO: - + - Un-bitrot ISel + - Hook up If-Conversion a la ARM target + - Hook up all branch analysis functions + - Instruction scheduling + - Bundling + - Dynamic Optimization + - Testing and bugfixing - stop passing FP args in both FP *and* integer regs when not required - allocate low (nonstacked) registers more aggressively - clean up and thoroughly test the isel patterns. @@ -65,14 +17,11 @@ (we will avoid the mess that is: http://gcc.gnu.org/ml/gcc/2003-12/msg00832.html ) - instruction scheduling (h! ;) - - write truly inspirational documentation - - if-conversion (predicate database/knowledge? etc etc) - counted loop support - make integer + FP mul/div more clever (we have fixed pseudocode atm) - track and use comparison complements INFO: - - we are strictly LP64 here, no support for ILP32 on HP-UX. Linux users don't need to worry about this. - i have instruction scheduling/bundling pseudocode, that really works @@ -80,7 +29,6 @@ so, before you go write your own, send me an email! KNOWN DEFECTS AT THE CURRENT TIME: - - C++ vtables contain naked function pointers, not function descriptors,
[llvm-commits] [llvm] r46998 - in /llvm/trunk/test/CodeGen/X86: fold-mul-lohi.ll stride-nine-with-base-reg.ll stride-reuse.ll
Author: evancheng Date: Tue Feb 12 01:22:46 2008 New Revision: 46998 URL: http://llvm.org/viewvc/llvm-project?rev=46998&view=rev Log: Fix some test cases. Modified: llvm/trunk/test/CodeGen/X86/fold-mul-lohi.ll llvm/trunk/test/CodeGen/X86/stride-nine-with-base-reg.ll llvm/trunk/test/CodeGen/X86/stride-reuse.ll Modified: llvm/trunk/test/CodeGen/X86/fold-mul-lohi.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/fold-mul-lohi.ll?rev=46998&r1=46997&r2=46998&view=diff == --- llvm/trunk/test/CodeGen/X86/fold-mul-lohi.ll (original) +++ llvm/trunk/test/CodeGen/X86/fold-mul-lohi.ll Tue Feb 12 01:22:46 2008 @@ -1,5 +1,5 @@ ; RUN: llvm-as < %s | llc -march=x86 | not grep lea -; RUN: llvm-as < %s | llc -march=x86-64 | not grep lea +; RUN: llvm-as < %s | llc -march=x86-64 -relocation-model=pic | not grep lea @B = external global [1000 x i8], align 32 @A = external global [1000 x i8], align 32 Modified: llvm/trunk/test/CodeGen/X86/stride-nine-with-base-reg.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/stride-nine-with-base-reg.ll?rev=46998&r1=46997&r2=46998&view=diff == --- llvm/trunk/test/CodeGen/X86/stride-nine-with-base-reg.ll (original) +++ llvm/trunk/test/CodeGen/X86/stride-nine-with-base-reg.ll Tue Feb 12 01:22:46 2008 @@ -1,5 +1,5 @@ ; RUN: llvm-as < %s | llc -march=x86 -relocation-model=static | grep lea | count 1 -; RUN: llvm-as < %s | llc -march=x86-64 | not grep lea +; RUN: llvm-as < %s | llc -march=x86-64 -relocation-model=pic | not grep lea ; For x86 there's an lea above the loop. In both cases, there shouldn't ; be any lea instructions inside the loop. Modified: llvm/trunk/test/CodeGen/X86/stride-reuse.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/stride-reuse.ll?rev=46998&r1=46997&r2=46998&view=diff == --- llvm/trunk/test/CodeGen/X86/stride-reuse.ll (original) +++ llvm/trunk/test/CodeGen/X86/stride-reuse.ll Tue Feb 12 01:22:46 2008 @@ -1,5 +1,5 @@ ; RUN: llvm-as < %s | llc -march=x86 | not grep lea -; RUN: llvm-as < %s | llc -march=x86-64 | not grep lea +; RUN: llvm-as < %s | llc -march=x86-64 -relocation-model=pic | not grep lea @B = external global [1000 x float], align 32 @A = external global [1000 x float], align 32 ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/demo/index.cgi
Changes in directory llvm-www/demo: index.cgi updated: 1.81 -> 1.82 --- Log message: 2.2 release. --- Diffs of the changes: (+2 -2) index.cgi |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm-www/demo/index.cgi diff -u llvm-www/demo/index.cgi:1.81 llvm-www/demo/index.cgi:1.82 --- llvm-www/demo/index.cgi:1.81Mon Oct 1 17:52:08 2007 +++ llvm-www/demo/index.cgi Tue Feb 12 01:25:41 2008 @@ -26,8 +26,8 @@ my @PREPENDPATHDIRS = ( -'/home/vadve/shared/llvm-gcc4.0-2.1/bin/', -'/home/vadve/shared/llvm-2.1/Release/bin'); +'/home/vadve/shared/llvm-gcc4.2/bin/', +'/home/vadve/shared/llvm-2.2/Release/bin'); my $defaultsrc = "#include \n#include \n\n" . "int power(int X) {\n if (X == 0) return 1;\n" . ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
Re: [llvm-commits] Fix for PR1798 (ScalarEvolution)
Nick Lewycky wrote: >> After your question, I have realized that 32 bits for the divisor may be >> too much... Using "only" 16 bits would allow us to handle AddRecs up to >> length 8. If you agree 16 is a safe bitwidth, I'll change it. However, >> the maximum operation you ask about will still be necessary. > > Optimally, we'd use APInt and get the right length up front, but there's > no need for that to hold up this patch. Ok. I've added a comment for that. I've also lifted the restriction that the dividend should be at least 32 bits wide. Currently, the dividend is computed with the minimum necessary bitwidth and extended, if needed, just before the division. The patch is here: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20080211/058097.html I think it's a good idea to keep the PR open. It will prevent us from forgetting to turn off the hack in future... Wojtek ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46956 - /llvm/trunk/include/llvm/Target/TargetLowering.h
Author: baldrick Date: Mon Feb 11 05:09:23 2008 New Revision: 46956 URL: http://llvm.org/viewvc/llvm-project?rev=46956&view=rev Log: Add arbitrary integer support to getRegisterType and getNumRegisters. This is needed for calling functions with apint parameters or return values. Modified: llvm/trunk/include/llvm/Target/TargetLowering.h Modified: llvm/trunk/include/llvm/Target/TargetLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetLowering.h?rev=46956&r1=46955&r2=46956&view=diff == --- llvm/trunk/include/llvm/Target/TargetLowering.h (original) +++ llvm/trunk/include/llvm/Target/TargetLowering.h Mon Feb 11 05:09:23 2008 @@ -434,13 +434,18 @@ (void)getVectorTypeBreakdown(VT, VT1, NumIntermediates, RegisterVT); return RegisterVT; } +if (MVT::isInteger(VT)) { + return getRegisterType(getTypeToTransformTo(VT)); +} assert(0 && "Unsupported extended type!"); } /// getNumRegisters - Return the number of registers that this ValueType will /// eventually require. This is one for any types promoted to live in larger /// registers, but may be more than one for types (like i64) that are split - /// into pieces. + /// into pieces. For types like i140, which are first promoted then expanded, + /// it is the number of registers needed to hold all the bits of the original + /// type. For an i140 on a 32 bit machine this means 5 registers. unsigned getNumRegisters(MVT::ValueType VT) const { if (!MVT::isExtendedVT(VT)) { assert(VT < array_lengthof(NumRegistersForVT)); @@ -451,6 +456,11 @@ unsigned NumIntermediates; return getVectorTypeBreakdown(VT, VT1, NumIntermediates, VT2); } +if (MVT::isInteger(VT)) { + unsigned BitWidth = MVT::getSizeInBits(VT); + unsigned RegWidth = MVT::getSizeInBits(getRegisterType(VT)); + return (BitWidth + RegWidth - 1) / RegWidth; +} assert(0 && "Unsupported extended type!"); } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/docs/HistoricalNotes/
Changes in directory llvm-www/releases/2.2/docs/HistoricalNotes: --- Log message: Directory /var/cvs/llvm/llvm-www/releases/2.2/docs/HistoricalNotes added to the repository --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/docs/img/
Changes in directory llvm-www/releases/2.2/docs/img: --- Log message: Directory /var/cvs/llvm/llvm-www/releases/2.2/docs/img added to the repository --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/docs/CommandGuide/ps/
Changes in directory llvm-www/releases/2.2/docs/CommandGuide/ps: --- Log message: Directory /var/cvs/llvm/llvm-www/releases/2.2/docs/CommandGuide/ps added to the repository --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/docs/
Changes in directory llvm-www/releases/2.2/docs: --- Log message: Directory /var/cvs/llvm/llvm-www/releases/2.2/docs added to the repository --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46953 - in /llvm/trunk: lib/CodeGen/RegAllocLocal.cpp test/CodeGen/PowerPC/2008-02-09-LocalRegAllocAssert.ll
Author: evancheng Date: Mon Feb 11 02:30:52 2008 New Revision: 46953 URL: http://llvm.org/viewvc/llvm-project?rev=46953&view=rev Log: Determine whether a spill kills the register it's spilling before insertion rather than trying to undo the kill marker afterwards. Added: llvm/trunk/test/CodeGen/PowerPC/2008-02-09-LocalRegAllocAssert.ll Modified: llvm/trunk/lib/CodeGen/RegAllocLocal.cpp Modified: llvm/trunk/lib/CodeGen/RegAllocLocal.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegAllocLocal.cpp?rev=46953&r1=46952&r2=46953&view=diff == --- llvm/trunk/lib/CodeGen/RegAllocLocal.cpp (original) +++ llvm/trunk/lib/CodeGen/RegAllocLocal.cpp Mon Feb 11 02:30:52 2008 @@ -303,17 +303,12 @@ const TargetRegisterClass *RC = MF->getRegInfo().getRegClass(VirtReg); int FrameIndex = getStackSpaceFor(VirtReg, RC); DOUT << " to stack slot #" << FrameIndex; -TII->storeRegToStackSlot(MBB, I, PhysReg, true, FrameIndex, RC); - // If the instruction reads the register that's spilled, (e.g. this can // happen if it is a move to a physical register), then the spill // instruction is not a kill. -if (I != MBB.end() && I->findRegisterUseOperandIdx(PhysReg) != -1) { - MachineBasicBlock::iterator StoreMI = prior(I); - int Idx = StoreMI->findRegisterUseOperandIdx(PhysReg, true); - assert(Idx != -1 && "Unrecognized spill instruction!"); - StoreMI->getOperand(Idx).setIsKill(false); -} +bool isKill = !(I != MBB.end() && +I->findRegisterUseOperandIdx(PhysReg) != -1); +TII->storeRegToStackSlot(MBB, I, PhysReg, isKill, FrameIndex, RC); ++NumStores; // Update statistics } Added: llvm/trunk/test/CodeGen/PowerPC/2008-02-09-LocalRegAllocAssert.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PowerPC/2008-02-09-LocalRegAllocAssert.ll?rev=46953&view=auto == --- llvm/trunk/test/CodeGen/PowerPC/2008-02-09-LocalRegAllocAssert.ll (added) +++ llvm/trunk/test/CodeGen/PowerPC/2008-02-09-LocalRegAllocAssert.ll Mon Feb 11 02:30:52 2008 @@ -0,0 +1,10 @@ +; RUN: llvm-as < %s | llc -mtriple=powerpc-apple-darwin -regalloc=local + +define i32 @bork(i64 %foo, i64 %bar) { +entry: +%tmp = load i64* null, align 8 ; [#uses=2] +%tmp2 = icmp ule i64 %tmp, 0; [#uses=1] +%min = select i1 %tmp2, i64 %tmp, i64 0 ; [#uses=1] +store i64 %min, i64* null, align 8 +ret i32 0 +} ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
Re: [llvm-commits] [llvm-gcc-4.2] r46726 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
> > the current LLVM implementation means that anyone using threading > > needs > > to not do bitfield accesses, since the compiler generated code could > > cause trouble. > > This is not handled by LLVM, this is handled by FE that is translating > source code into LLVM IR. Unless all front-ends enforce this, we can > not claim that LLVM guarantees bit-field thread safety (I do think, it > is convenient if tools support bit-field thread safety). If you are > suggesting to handle this some how inside LLVM itself then I mis- > understood your comment. I was talking about how llvm-gcc handles bitfields. Sorry for the confusion. Ciao, Duncan. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm-gcc-4.2] r46989 - /llvm-gcc-4.2/tags/RELEASE_22/
Author: tbrethou Date: Mon Feb 11 23:20:15 2008 New Revision: 46989 URL: http://llvm.org/viewvc/llvm-project?rev=46989&view=rev Log: Tag release 2.2. Added: llvm-gcc-4.2/tags/RELEASE_22/ - copied from r46988, llvm-gcc-4.2/branches/release_22/ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/header.incl
Changes in directory llvm-www: header.incl updated: 1.65 -> 1.66 --- Log message: Release announcement. --- Diffs of the changes: (+1 -0) header.incl |1 + 1 files changed, 1 insertion(+) Index: llvm-www/header.incl diff -u llvm-www/header.incl:1.65 llvm-www/header.incl:1.66 --- llvm-www/header.incl:1.65 Tue Feb 12 01:07:40 2008 +++ llvm-www/header.inclTue Feb 12 01:29:47 2008 @@ -69,6 +69,7 @@ Status Updates + http://lists.cs.uiuc.edu/pipermail/llvm-announce/2008-February/25.html";>Feb 11, 2008 http://lists.cs.uiuc.edu/pipermail/llvm-announce/2007-September/24.html";>Sep 26, 2007 http://lists.cs.uiuc.edu/pipermail/llvm-announce/2007-May/23.html";>May 23, 2007 http://lists.cs.uiuc.edu/pipermail/llvm-announce/2007-February/21.html";>Feb 21, 2007 ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46995 - /llvm/trunk/docs/TableGenFundamentals.html
Author: void Date: Tue Feb 12 01:06:19 2008 New Revision: 46995 URL: http://llvm.org/viewvc/llvm-project?rev=46995&view=rev Log: Reformatting. Adding "doc_code" divisions for code examples. Updated some of the examples to reflect the current .TD files. Modified: llvm/trunk/docs/TableGenFundamentals.html Modified: llvm/trunk/docs/TableGenFundamentals.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/TableGenFundamentals.html?rev=46995&r1=46994&r2=46995&view=diff == --- llvm/trunk/docs/TableGenFundamentals.html (original) +++ llvm/trunk/docs/TableGenFundamentals.html Tue Feb 12 01:06:19 2008 @@ -68,8 +68,8 @@ of TableGen is the LLVM code generator. Note that if you work on TableGen much, and use emacs or vim, that you can -find an emacs "TableGen mode" and a vim language file in -llvm/utils/emacs and llvm/utils/vim directory of your LLVM +find an emacs "TableGen mode" and a vim language file in the +llvm/utils/emacs and llvm/utils/vim directories of your LLVM distribution, respectively. @@ -83,11 +83,11 @@ of which are considered 'records'. TableGen records have a unique name, a list of values, and a list of -superclasses. The list of values is main data that TableGen builds for each -record, it is this that holds the domain specific information for the +superclasses. The list of values is the main data that TableGen builds for each +record; it is this that holds the domain specific information for the application. The interpretation of this data is left to a specific TableGen backend, but the structure and format rules are -taken care of and fixed by TableGen. +taken care of and are fixed by TableGen. TableGen definitions are the concrete form of 'records'. These generally do not have any undefined values, and are marked with the @@ -95,7 +95,7 @@ TableGen classes are abstract records that are used to build and describe other records. These 'classes' allow the end-user to build -abstractions for either the domain they are targetting (such as "Register", +abstractions for either the domain they are targeting (such as "Register", "RegisterClass", and "Instruction" in the LLVM code generator) or for the implementor to help factor out common properties of records (such as "FPInst", which is used to represent floating point instructions in the X86 backend). @@ -119,42 +119,71 @@ the various definitions expand to fully. Running this on the X86.td file prints this (at the time of this writing): + ... -def ADDrr8 {// Instruction X86Inst I2A8 Pattern - string Name = "add"; +def ADD32rr { // Instruction X86Inst I string Namespace = "X86"; + dag OutOperandList = (outs GR32:$dst); + dag InOperandList = (ins GR32:$src1, GR32:$src2); + string AsmString = "add{l}\t{$src2, $dst|$dst, $src2}"; + listPattern = [(set GR32:$dst, (add GR32:$src1, GR32:$src2))]; list Uses = []; - list Defs = []; + list Defs = [EFLAGS]; + list Predicates = []; + int CodeSize = 3; + int AddedComplexity = 0; bit isReturn = 0; bit isBranch = 0; + bit isIndirectBranch = 0; + bit isBarrier = 0; bit isCall = 0; + bit isSimpleLoad = 0; + bit mayLoad = 0; + bit mayStore = 0; + bit isImplicitDef = 0; bit isTwoAddress = 1; + bit isConvertibleToThreeAddress = 1; + bit isCommutable = 1; bit isTerminator = 0; - dag Pattern = (set R8, (plus R8, R8)); - bits<8> Opcode = { 0, 0, 0, 0, 0, 0, 0, 0 }; + bit isReMaterializable = 0; + bit isPredicable = 0; + bit hasDelaySlot = 0; + bit usesCustomDAGSchedInserter = 0; + bit hasCtrlDep = 0; + bit isNotDuplicable = 0; + bit hasSideEffects = 0; + bit mayHaveSideEffects = 0; + bit neverHasSideEffects = 0; + InstrItinClass Itinerary = NoItinerary; + string Constraints = ""; + string DisableEncoding = ""; + bits<8> Opcode = { 0, 0, 0, 0, 0, 0, 0, 1 }; Format Form = MRMDestReg; - bits<5> FormBits = { 0, 0, 0, 1, 1 }; - ArgType Type = Arg8; - bits<3> TypeBits = { 0, 0, 1 }; + bits<6> FormBits = { 0, 0, 0, 0, 1, 1 }; + ImmType ImmT = NoImm; + bits<3> ImmTypeBits = { 0, 0, 0 }; bit hasOpSizePrefix = 0; - bit printImplicitUses = 0; + bit hasAdSizePrefix = 0; bits<4> Prefix = { 0, 0, 0, 0 }; + bit hasREX_WPrefix = 0; FPFormat FPForm = ?; bits<3> FPFormBits = { 0, 0, 0 }; } ... + -This definition corresponds to an 8-bit register-register add instruction in +This definition corresponds to a 32-bit register-register add instruction in the X86. The string after the 'def' string indicates the name of the -record ("ADDrr8" in this case), and the comment at the end of the line -indicates the superclasses of the definition. The body of the record contains -all of the data that TableGen assembled for the record, indicating that the -instruction is part of the "X86" namespace, should be printed as "add" -in the assembly file, it is a two-address instruction, has a par
[llvm-commits] [llvm] r46959 - in /llvm/trunk: lib/Analysis/ScalarEvolution.cpp test/Analysis/ScalarEvolution/2008-02-11-ReversedCondition.ll
Author: wmat Date: Mon Feb 11 12:37:34 2008 New Revision: 46959 URL: http://llvm.org/viewvc/llvm-project?rev=46959&view=rev Log: If the LHS of the comparison is a loop-invariant we also want to move it to the RHS. This simple change allows to compute loop iteration count for loops with condition similar to the one in the testcase (which seems to be quite common). Added: llvm/trunk/test/Analysis/ScalarEvolution/2008-02-11-ReversedCondition.ll Modified: llvm/trunk/lib/Analysis/ScalarEvolution.cpp Modified: llvm/trunk/lib/Analysis/ScalarEvolution.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ScalarEvolution.cpp?rev=46959&r1=46958&r2=46959&view=diff == --- llvm/trunk/lib/Analysis/ScalarEvolution.cpp (original) +++ llvm/trunk/lib/Analysis/ScalarEvolution.cpp Mon Feb 11 12:37:34 2008 @@ -1819,8 +1819,8 @@ // At this point, we would like to compute how many iterations of the // loop the predicate will return true for these inputs. - if (isa(LHS) && !isa(RHS)) { -// If there is a constant, force it into the RHS. + if (LHS->isLoopInvariant(L) && !RHS->isLoopInvariant(L)) { +// If there is a loop-invariant, force it into the RHS. std::swap(LHS, RHS); Cond = ICmpInst::getSwappedPredicate(Cond); } Added: llvm/trunk/test/Analysis/ScalarEvolution/2008-02-11-ReversedCondition.ll URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/ScalarEvolution/2008-02-11-ReversedCondition.ll?rev=46959&view=auto == --- llvm/trunk/test/Analysis/ScalarEvolution/2008-02-11-ReversedCondition.ll (added) +++ llvm/trunk/test/Analysis/ScalarEvolution/2008-02-11-ReversedCondition.ll Mon Feb 11 12:37:34 2008 @@ -0,0 +1,15 @@ +; RUN: llvm-as < %s | opt -scalar-evolution -analyze | not grep Unpredictable + +define void @foo(i32 %n) { +entry: + br label %header +header: + %i = phi i32 [ 0, %entry ], [ %i.inc, %next ] + %cond = icmp sgt i32 %n, %i + br i1 %cond, label %next, label %return +next: +%i.inc = add i32 %i, 1 + br label %header +return: + ret void +} ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46981 - /llvm/trunk/docs/GettingStarted.html
Author: tbrethou Date: Mon Feb 11 20:42:55 2008 New Revision: 46981 URL: http://llvm.org/viewvc/llvm-project?rev=46981&view=rev Log: Add 2.2 release tag. Modified: llvm/trunk/docs/GettingStarted.html Modified: llvm/trunk/docs/GettingStarted.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/GettingStarted.html?rev=46981&r1=46980&r2=46981&view=diff == --- llvm/trunk/docs/GettingStarted.html (original) +++ llvm/trunk/docs/GettingStarted.html Mon Feb 11 20:42:55 2008 @@ -710,6 +710,7 @@ subdirectories of the 'tags' directory: +Release 2.2: RELEASE_22 Release 2.1: RELEASE_21 Release 2.0: RELEASE_20 Release 1.9: RELEASE_19 ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/header.incl
Changes in directory llvm-www: header.incl updated: 1.64 -> 1.65 --- Log message: 2.2 release. --- Diffs of the changes: (+2 -2) header.incl |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm-www/header.incl diff -u llvm-www/header.incl:1.64 llvm-www/header.incl:1.65 --- llvm-www/header.incl:1.64 Wed Jan 9 12:37:54 2008 +++ llvm-www/header.inclTue Feb 12 01:07:40 2008 @@ -39,7 +39,7 @@ Download! Download now: -LLVM 2.1 +LLVM 2.2 Try the @@ -47,7 +47,7 @@ View the open-source -license +license ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm-gcc-4.2] r46958 - in /llvm-gcc-4.2/trunk/gcc: config/i386/llvm-i386-target.h llvm-types.cpp
Author: johannes Date: Mon Feb 11 12:03:06 2008 New Revision: 46958 URL: http://llvm.org/viewvc/llvm-project?rev=46958&view=rev Log: Choose an SSE vector-containing type for the constructed type that represents a union, if the union contains such a type. Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h llvm-gcc-4.2/trunk/gcc/llvm-types.cpp Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h?rev=46958&r1=46957&r2=46958&view=diff == --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h Mon Feb 11 12:03:06 2008 @@ -83,6 +83,15 @@ } \ } +/* Aggregates containing SSE vectors are aligned at 16 bytes as parameters; + while long double has GCC alignment of 16 bytes (correct for struct layout) + but is only 4 byte aligned as a parameter. So if a union type contains an + SSE vector, use that as the basis for the constructed LLVM struct. */ +#define TARGET_LLVM_COMPARE_UNION_FIELDS(curType, newType, curAlign, newAlign) \ + (newAlign==curAlign && TARGET_SSE && \ + TheTarget->getTargetLowering()->getByValTypeAlignment(newType) > \ + TheTarget->getTargetLowering()->getByValTypeAlignment(curType)) + #ifdef LLVM_ABI_H extern bool llvm_x86_should_pass_aggregate_in_memory(tree, const Type *); Modified: llvm-gcc-4.2/trunk/gcc/llvm-types.cpp URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-types.cpp?rev=46958&r1=46957&r2=46958&view=diff == --- llvm-gcc-4.2/trunk/gcc/llvm-types.cpp (original) +++ llvm-gcc-4.2/trunk/gcc/llvm-types.cpp Mon Feb 11 12:03:06 2008 @@ -33,6 +33,7 @@ #include "llvm/TypeSymbolTable.h" #include "llvm/Target/TargetData.h" #include "llvm/Target/TargetMachine.h" +#include "llvm/Target/TargetLowering.h" #include "llvm/Assembly/Writer.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/StringExtras.h" @@ -1137,7 +1138,7 @@ // 'sret' functions cannot be 'readnone' or 'readonly'. if (ABIConverter.isStructReturn()) RAttributes &= ~(ParamAttr::ReadNone|ParamAttr::ReadOnly); - + // Compute whether the result needs to be zext or sext'd. RAttributes |= HandleArgumentExtension(TREE_TYPE(type)); @@ -2124,6 +2125,8 @@ /// ConvertUNION - We know that 'type' is a UNION_TYPE or a QUAL_UNION_TYPE: /// convert it to an LLVM type. +/// This involves creating a struct with the right size and alignment. In +/// some cases this is target dependent. const Type *TypeConverter::ConvertUNION(tree type, tree orig_type) { if (const Type *Ty = GET_TYPE_LLVM(type)) { // If we already compiled this type, and if it was not a forward @@ -2170,17 +2173,25 @@ // Select TheTy as union type if it meets one of the following criteria // 1) UnionTy is 0 // 2) TheTy alignment is more then UnionTy -// 3) TheTy size is greater than UnionTy size and TheTy alignment is equal to UnionTy +// 3) TheTy size is greater than UnionTy size and TheTy alignment is equal +//to UnionTy // 4) TheTy size is greater then UnionTy size and TheTy is packed +//FIXME there is no check for packed? bool useTheTy = false; if (UnionTy == 0) useTheTy = true; else if (Align > MaxAlign) useTheTy = true; +#ifdef TARGET_LLVM_COMPARE_UNION_FIELDS +else + useTheTy = TARGET_LLVM_COMPARE_UNION_FIELDS(UnionTy, TheTy, + Align, MaxAlign); +#else else if (MaxAlign == Align && Size > MaxSize) useTheTy = true; -else if (Size > MaxSize) +else if (Size > MaxSize)// FIXME really? Seems wrong to lower alignment useTheTy = true; +#endif if (useTheTy) { UnionTy = TheTy; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46999 - /llvm/trunk/test/CFrontend/2008-02-11-AnnotateBuiltin.c
Author: tbrethou Date: Tue Feb 12 01:46:33 2008 New Revision: 46999 URL: http://llvm.org/viewvc/llvm-project?rev=46999&view=rev Log: Test case for annotate builtin. Added: llvm/trunk/test/CFrontend/2008-02-11-AnnotateBuiltin.c Added: llvm/trunk/test/CFrontend/2008-02-11-AnnotateBuiltin.c URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CFrontend/2008-02-11-AnnotateBuiltin.c?rev=46999&view=auto == --- llvm/trunk/test/CFrontend/2008-02-11-AnnotateBuiltin.c (added) +++ llvm/trunk/test/CFrontend/2008-02-11-AnnotateBuiltin.c Tue Feb 12 01:46:33 2008 @@ -0,0 +1,7 @@ +// RUN: %llvmgcc %s -S -o - | llvm-as | llvm-dis | grep llvm.annotation + +int main() { + int x = 0; + return __builtin_annotation(x, "annotate"); +} + ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46957 - in /llvm/trunk: include/llvm/ADT/APFloat.h include/llvm/ADT/FoldingSet.h include/llvm/Support/AlignOf.h lib/CodeGen/SelectionDAG/SelectionDAG.cpp lib/Support/APFloat.cpp
Author: kremenek Date: Mon Feb 11 11:24:50 2008 New Revision: 46957 URL: http://llvm.org/viewvc/llvm-project?rev=46957&view=rev Log: Added "Profile" method to APFloat for use with FoldingSet. Added member template "Add" to FoldingSetNodeID that allows "adding" arbitrary objects to a profile via dispatch to FoldingSetTrait::Profile(). Removed FoldingSetNodeID::AddAPFloat and FoldingSetNodeID::APInt, as their functionality is now replaced using the above mentioned member template. Modified: llvm/trunk/include/llvm/ADT/APFloat.h llvm/trunk/include/llvm/ADT/FoldingSet.h llvm/trunk/include/llvm/Support/AlignOf.h llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp llvm/trunk/lib/Support/APFloat.cpp llvm/trunk/lib/Support/FoldingSet.cpp Modified: llvm/trunk/include/llvm/ADT/APFloat.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/APFloat.h?rev=46957&r1=46956&r2=46957&view=diff == --- llvm/trunk/include/llvm/ADT/APFloat.h (original) +++ llvm/trunk/include/llvm/ADT/APFloat.h Mon Feb 11 11:24:50 2008 @@ -181,6 +181,10 @@ APFloat(const APFloat &); ~APFloat(); +/// Profile - Used to insert APFloat objects, or objects that contain +/// APFloat objects, into FoldingSets. +void Profile(FoldingSetNodeID& NID) const; + /// @brief Used by the Bitcode serializer to emit APInts to Bitcode. void Emit(Serializer& S) const; Modified: llvm/trunk/include/llvm/ADT/FoldingSet.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/FoldingSet.h?rev=46957&r1=46956&r2=46957&view=diff == --- llvm/trunk/include/llvm/ADT/FoldingSet.h (original) +++ llvm/trunk/include/llvm/ADT/FoldingSet.h Mon Feb 11 11:24:50 2008 @@ -178,6 +178,19 @@ virtual void GetNodeProfile(FoldingSetNodeID &ID, Node *N) const = 0; }; +//===--===// +/// FoldingSetTrait - This trait class is used to define behavior of how +/// to "profile" (in the FoldingSet parlance) an object of a given type. +/// The default behavior is to invoke a 'Profile' method on an object, but +/// through template specialization the behavior can be tailored for specific +/// types. Combined with the FoldingSetNodeWrapper classs, one can add objects +/// to FoldingSets that were not originally designed to have that behavior. +/// +template struct FoldingSetTrait { + static inline void Profile(const T& X, FoldingSetNodeID& ID) { X.Profile(ID);} + static inline void Profile(T& X, FoldingSetNodeID& ID) { X.Profile(ID); } +}; + //======// /// FoldingSetNodeID - This class is used to gather all the unique data bits of /// a node. When all the bits are gathered this class is used to produce a @@ -206,10 +219,11 @@ void AddInteger(uint64_t I); void AddFloat(float F); void AddDouble(double D); - void AddAPFloat(const APFloat& apf); - void AddAPInt(const APInt& api); void AddString(const std::string &String); + template + inline void Add(const T& x) { FoldingSetTrait::Profile(x, *this); } + /// clear - Clear the accumulated profile, allowing this FoldingSetNodeID /// object to be used to compute a new profile. inline void clear() { Bits.clear(); } @@ -227,19 +241,6 @@ typedef FoldingSetImpl::Node FoldingSetNode; template class FoldingSetIterator; template class FoldingSetBucketIterator; - -//===--===// -/// FoldingSetTrait - This trait class is used to define behavior of how -/// to "profile" (in the FoldingSet parlance) an object of a given type. -/// The default behavior is to invoke a 'Profile' method on an object, but -/// through template specialization the behavior can be tailored for specific -/// types. Combined with the FoldingSetNodeWrapper classs, one can add objects -/// to FoldingSets that were not originally designed to have that behavior. -/// -template struct FoldingSetTrait { - static inline void Profile(const T& X, FoldingSetNodeID& ID) { X.Profile(ID);} - static inline void Profile(T& X, FoldingSetNodeID& ID) { X.Profile(ID); } -}; //===--===// /// FoldingSet - This template class is used to instantiate a specialized Modified: llvm/trunk/include/llvm/Support/AlignOf.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/AlignOf.h?rev=46957&r1=46956&r2=46957&view=diff == --- llvm/trunk/include/llvm/Support/AlignOf.h (original) +++ llvm/trunk/include/llvm/Support/AlignOf.h Mon Feb 11 11:24:50 2008 @@ -35,6 +35,10 @@ template struct AlignOf { enum { Alignment = sizeof(Alignme
[llvm-commits] [llvm-gcc-4.0] r47000 - /llvm-gcc-4.0/trunk/gcc/builtins.def
Author: tbrethou Date: Tue Feb 12 01:47:45 2008 New Revision: 47000 URL: http://llvm.org/viewvc/llvm-project?rev=47000&view=rev Log: Remove extra underscore. Modified: llvm-gcc-4.0/trunk/gcc/builtins.def Modified: llvm-gcc-4.0/trunk/gcc/builtins.def URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/builtins.def?rev=47000&r1=46999&r2=47000&view=diff == --- llvm-gcc-4.0/trunk/gcc/builtins.def (original) +++ llvm-gcc-4.0/trunk/gcc/builtins.def Tue Feb 12 01:47:45 2008 @@ -634,7 +634,7 @@ DEF_C99_BUILTIN(BUILT_IN__EXIT2, "_Exit", BT_FN_VOID_INT, ATTR_NORETURN_NOTHROW_LIST) /* APPLE LOCAL begin LLVM */ -DEF_GCC_BUILTIN(BUILT_IN_ANNOTATION, "_annotation", BT_FN_UINT_UINT_CONST_STRING, ATTR_NULL) +DEF_GCC_BUILTIN(BUILT_IN_ANNOTATION, "annotation", BT_FN_UINT_UINT_CONST_STRING, ATTR_NULL) /* APPLE LOCAL end LLVM */ /* Implementing nested functions. */ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
Re: [llvm-commits] [llvm-gcc-4.2] r46958 - in /llvm-gcc-4.2/trunk/gcc: config/i386/llvm-i386-target.h llvm-types.cpp
This fixes an ABI issue with unions on i386 (Darwin for sure, and I hope Linux as well). I believe the FIXMEs I added indicate a latent bug, but I'm not sure what the intent was, so could whoever wrote this code originally take a look? (As an aside, assuming that there is a struct type that gets passed the same way as any union type strikes me as dangerous. I don't think there's any reason such a struct needs to exist.) On Feb 11, 2008, at 10:03 AM, Dale Johannesen wrote: > Author: johannes > Date: Mon Feb 11 12:03:06 2008 > New Revision: 46958 > > URL: http://llvm.org/viewvc/llvm-project?rev=46958&view=rev > Log: > Choose an SSE vector-containing type for the constructed > type that represents a union, if the union contains such > a type. > > > Modified: >llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h >llvm-gcc-4.2/trunk/gcc/llvm-types.cpp > > Modified: llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h > URL: > http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h?rev=46958&r1=46957&r2=46958&view=diff > > = > = > = > = > = > = > = > = > == > --- llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h (original) > +++ llvm-gcc-4.2/trunk/gcc/config/i386/llvm-i386-target.h Mon Feb 11 > 12:03:06 2008 > @@ -83,6 +83,15 @@ > } \ > } > > +/* Aggregates containing SSE vectors are aligned at 16 bytes as > parameters; > + while long double has GCC alignment of 16 bytes (correct for > struct layout) > + but is only 4 byte aligned as a parameter. So if a union type > contains an > + SSE vector, use that as the basis for the constructed LLVM > struct. */ > +#define TARGET_LLVM_COMPARE_UNION_FIELDS(curType, newType, > curAlign, newAlign) \ > + (newAlign==curAlign && TARGET_SSE > && \ > + TheTarget->getTargetLowering()->getByValTypeAlignment(newType) > >\ > + TheTarget->getTargetLowering()->getByValTypeAlignment(curType)) > + > #ifdef LLVM_ABI_H > extern bool llvm_x86_should_pass_aggregate_in_memory(tree, const > Type *); > > > Modified: llvm-gcc-4.2/trunk/gcc/llvm-types.cpp > URL: > http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-types.cpp?rev=46958&r1=46957&r2=46958&view=diff > > = > = > = > = > = > = > = > = > == > --- llvm-gcc-4.2/trunk/gcc/llvm-types.cpp (original) > +++ llvm-gcc-4.2/trunk/gcc/llvm-types.cpp Mon Feb 11 12:03:06 2008 > @@ -33,6 +33,7 @@ > #include "llvm/TypeSymbolTable.h" > #include "llvm/Target/TargetData.h" > #include "llvm/Target/TargetMachine.h" > +#include "llvm/Target/TargetLowering.h" > #include "llvm/Assembly/Writer.h" > #include "llvm/ADT/DenseMap.h" > #include "llvm/ADT/StringExtras.h" > @@ -1137,7 +1138,7 @@ > // 'sret' functions cannot be 'readnone' or 'readonly'. > if (ABIConverter.isStructReturn()) > RAttributes &= ~(ParamAttr::ReadNone|ParamAttr::ReadOnly); > - > + > // Compute whether the result needs to be zext or sext'd. > RAttributes |= HandleArgumentExtension(TREE_TYPE(type)); > > @@ -2124,6 +2125,8 @@ > > /// ConvertUNION - We know that 'type' is a UNION_TYPE or a > QUAL_UNION_TYPE: > /// convert it to an LLVM type. > +/// This involves creating a struct with the right size and > alignment. In > +/// some cases this is target dependent. > const Type *TypeConverter::ConvertUNION(tree type, tree orig_type) { > if (const Type *Ty = GET_TYPE_LLVM(type)) { > // If we already compiled this type, and if it was not a forward > @@ -2170,17 +2173,25 @@ > // Select TheTy as union type if it meets one of the following > criteria > // 1) UnionTy is 0 > // 2) TheTy alignment is more then UnionTy > -// 3) TheTy size is greater than UnionTy size and TheTy > alignment is equal to UnionTy > +// 3) TheTy size is greater than UnionTy size and TheTy > alignment is equal > +//to UnionTy > // 4) TheTy size is greater then UnionTy size and TheTy is packed > +//FIXME there is no check for packed? > bool useTheTy = false; > if (UnionTy == 0) > useTheTy = true; > else if (Align > MaxAlign) > useTheTy = true; > +#ifdef TARGET_LLVM_COMPARE_UNION_FIELDS > +else > + useTheTy = TARGET_LLVM_COMPARE_UNION_FIELDS(UnionTy, TheTy, > + Align, MaxAlign); > +#else > else if (MaxAlign == Align && Size > MaxSize) > useTheTy = true; > -else if (Size > MaxSize) > +else if (Size > MaxSize)// FIXME really? Seems wrong to > lower alignment > useTheTy = true; > +#endif > > if (useTheTy) { > UnionTy = TheTy; > > > ___ > llvm-commits mailing list > llvm-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-
[llvm-commits] [llvm-gcc-4.0] r46988 - /llvm-gcc-4.0/tags/RELEASE_22/
Author: tbrethou Date: Mon Feb 11 23:19:58 2008 New Revision: 46988 URL: http://llvm.org/viewvc/llvm-project?rev=46988&view=rev Log: Tag release 2.2 Added: llvm-gcc-4.0/tags/RELEASE_22/ - copied from r46987, llvm-gcc-4.0/branches/release_22/ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46985 - /llvm/trunk/docs/ReleaseNotes.html
Author: lattner Date: Mon Feb 11 23:07:12 2008 New Revision: 46985 URL: http://llvm.org/viewvc/llvm-project?rev=46985&view=rev Log: remove unknown details Modified: llvm/trunk/docs/ReleaseNotes.html Modified: llvm/trunk/docs/ReleaseNotes.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/ReleaseNotes.html?rev=46985&r1=46984&r2=46985&view=diff == --- llvm/trunk/docs/ReleaseNotes.html (original) +++ llvm/trunk/docs/ReleaseNotes.html Mon Feb 11 23:07:12 2008 @@ -303,10 +303,8 @@ advantage of its predication features. Bruno added PIC support to the MIPS backend, fixed many bugs and improved support for architecture variants. -Arnold Schwaighofer added support for X86 tail calls (limitations? -details?). -Evan contributed several enhancements to Darwin/x86 debug information, -and improvements at -O0 (details?). +Arnold Schwaighofer added initial support for X86 tail calls. +Evan contributed several enhancements to Darwin/x86 debug information. Duncan added x86-64 support for trampolines (pointers to nested functions). ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46978 - /llvm/trunk/include/llvm/ADT/APInt.h
Author: djg Date: Mon Feb 11 17:45:14 2008 New Revision: 46978 URL: http://llvm.org/viewvc/llvm-project?rev=46978&view=rev Log: Correct the order of the arguments in the examples in the comments for APInt::getBitsSet. And fix an off-by-one bug in "wrapping" mode. Modified: llvm/trunk/include/llvm/ADT/APInt.h Modified: llvm/trunk/include/llvm/ADT/APInt.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/APInt.h?rev=46978&r1=46977&r2=46978&view=diff == --- llvm/trunk/include/llvm/ADT/APInt.h (original) +++ llvm/trunk/include/llvm/ADT/APInt.h Mon Feb 11 17:45:14 2008 @@ -371,9 +371,9 @@ /// Constructs an APInt value that has a contiguous range of bits set. The /// bits from loBit to hiBit will be set. All other bits will be zero. For - /// example, with parameters(32, 15, 0) you would get 0x. If hiBit is + /// example, with parameters(32, 0, 15) you would get 0x. If hiBit is /// less than loBit then the set bits "wrap". For example, with - /// parameters (32, 3, 28), you would get 0xF00F. + /// parameters (32, 28, 3), you would get 0xF00F. /// @param numBits the intended bit width of the result /// @param loBit the index of the lowest bit set. /// @param hiBit the index of the highest bit set. @@ -384,7 +384,7 @@ assert(loBit < numBits && "loBit out of range"); if (hiBit < loBit) return getLowBitsSet(numBits, hiBit+1) | - getHighBitsSet(numBits, numBits-loBit+1); + getHighBitsSet(numBits, numBits-loBit); return getLowBitsSet(numBits, hiBit-loBit+1).shl(loBit); } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/devmtg/current/index.html
Changes in directory llvm-www/devmtg/current: index.html updated: 1.5 -> 1.6 --- Log message: Updated unconfirmed attendees list --- Diffs of the changes: (+7 -1) index.html |8 +++- 1 files changed, 7 insertions(+), 1 deletion(-) Index: llvm-www/devmtg/current/index.html diff -u llvm-www/devmtg/current/index.html:1.5 llvm-www/devmtg/current/index.html:1.6 --- llvm-www/devmtg/current/index.html:1.5 Thu Jan 10 20:27:44 2008 +++ llvm-www/devmtg/current/index.html Mon Feb 11 17:24:15 2008 @@ -39,6 +39,9 @@ Owen AndersonApple, Inc. Chandler Carruth Evan ChengApple, Inc. + Eric ChristopherApple, Inc. + Samuel Crow + Kurt HarrimanGreenplum Robert HundtGoogle Dale JohannesenApple, Inc. Jonathan JohnsonAlacatia Labs, Inc. @@ -51,10 +54,13 @@ Devang PatelApple, Inc. Joseph RanieriAlacatia Labs, Inc. Chuck RoseAdobe Systems Incorporated + Robert StaudingerUniversity of Salzburg, Austria Mike StumpApple, Inc. Bill WendlingApple, Inc. + Robert Zeh + Chuck (Chengyan) ZhaoUniversity of Toronto - Total unconfirmed: 17 + Total unconfirmed: 23 If your name is misspelled, or organization affiliation isn't correct, please mailto:[EMAIL PROTECTED]">email us, and we'll correct it. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46955 - in /llvm/trunk: include/llvm/Analysis/ScalarEvolution.h include/llvm/Analysis/ScalarEvolutionExpander.h include/llvm/Analysis/ScalarEvolutionExpressions.h lib/Analysis/S
Author: wmat Date: Mon Feb 11 05:03:14 2008 New Revision: 46955 URL: http://llvm.org/viewvc/llvm-project?rev=46955&view=rev Log: Fix PR1798 - an error in the evaluation of SCEVAddRecExpr at an arbitrary iteration. The patch: 1) changes SCEVSDivExpr into SCEVUDivExpr, 2) replaces PartialFact() function with BinomialCoefficient(); the computations (essentially, the division) in BinomialCoefficient() are performed with the apprioprate bitwidth necessary to avoid overflow; unsigned division is used instead of the signed one. Computations in BinomialCoefficient() require support from the code generator for APInts. Currently, we use a hack rounding up the neccessary bitwidth to the nearest power of 2. The hack is easy to turn off in future. One remaining issue: we assume the divisor of the binomial coefficient formula can be computed accurately using 16 bits. It means we can handle AddRecs of length up to 9. In future, we should use APInts to evaluate the divisor. Thanks to Nicholas for cooperation! Modified: llvm/trunk/include/llvm/Analysis/ScalarEvolution.h llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpander.h llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpressions.h llvm/trunk/lib/Analysis/ScalarEvolution.cpp llvm/trunk/test/Analysis/ScalarEvolution/2007-11-14-SignedAddRec.ll Modified: llvm/trunk/include/llvm/Analysis/ScalarEvolution.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/ScalarEvolution.h?rev=46955&r1=46954&r2=46955&view=diff == --- llvm/trunk/include/llvm/Analysis/ScalarEvolution.h (original) +++ llvm/trunk/include/llvm/Analysis/ScalarEvolution.h Mon Feb 11 05:03:14 2008 @@ -225,7 +225,7 @@ Ops.push_back(RHS); return getMulExpr(Ops); } -SCEVHandle getSDivExpr(const SCEVHandle &LHS, const SCEVHandle &RHS); +SCEVHandle getUDivExpr(const SCEVHandle &LHS, const SCEVHandle &RHS); SCEVHandle getAddRecExpr(const SCEVHandle &Start, const SCEVHandle &Step, const Loop *L); SCEVHandle getAddRecExpr(std::vector &Operands, Modified: llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpander.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpander.h?rev=46955&r1=46954&r2=46955&view=diff == --- llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpander.h (original) +++ llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpander.h Mon Feb 11 05:03:14 2008 @@ -126,10 +126,10 @@ Value *visitMulExpr(SCEVMulExpr *S); -Value *visitSDivExpr(SCEVSDivExpr *S) { +Value *visitUDivExpr(SCEVUDivExpr *S) { Value *LHS = expand(S->getLHS()); Value *RHS = expand(S->getRHS()); - return InsertBinop(Instruction::SDiv, LHS, RHS, InsertPt); + return InsertBinop(Instruction::UDiv, LHS, RHS, InsertPt); } Value *visitAddRecExpr(SCEVAddRecExpr *S); Modified: llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpressions.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpressions.h?rev=46955&r1=46954&r2=46955&view=diff == --- llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpressions.h (original) +++ llvm/trunk/include/llvm/Analysis/ScalarEvolutionExpressions.h Mon Feb 11 05:03:14 2008 @@ -25,7 +25,7 @@ // These should be ordered in terms of increasing complexity to make the // folders simpler. scConstant, scTruncate, scZeroExtend, scSignExtend, scAddExpr, scMulExpr, -scSDivExpr, scAddRecExpr, scSMaxExpr, scUnknown, scCouldNotCompute +scUDivExpr, scAddRecExpr, scSMaxExpr, scUnknown, scCouldNotCompute }; //======// @@ -322,16 +322,16 @@ //======// - /// SCEVSDivExpr - This class represents a binary signed division operation. + /// SCEVUDivExpr - This class represents a binary unsigned division operation. /// - class SCEVSDivExpr : public SCEV { + class SCEVUDivExpr : public SCEV { friend class ScalarEvolution; SCEVHandle LHS, RHS; -SCEVSDivExpr(const SCEVHandle &lhs, const SCEVHandle &rhs) - : SCEV(scSDivExpr), LHS(lhs), RHS(rhs) {} +SCEVUDivExpr(const SCEVHandle &lhs, const SCEVHandle &rhs) + : SCEV(scUDivExpr), LHS(lhs), RHS(rhs) {} -virtual ~SCEVSDivExpr(); +virtual ~SCEVUDivExpr(); public: const SCEVHandle &getLHS() const { return LHS; } const SCEVHandle &getRHS() const { return RHS; } @@ -353,7 +353,7 @@ if (L == LHS && R == RHS) return this; else -return SE.getSDivExpr(L, R); +return SE.getUDivExpr(L, R); } @@ -363,9 +363,9 @@ void print(std::ostream
[llvm-commits] [llvm] r46997 - /llvm/trunk/docs/TableGenFundamentals.html
Author: void Date: Tue Feb 12 01:12:46 2008 New Revision: 46997 URL: http://llvm.org/viewvc/llvm-project?rev=46997&view=rev Log: More violation fixes. Modified: llvm/trunk/docs/TableGenFundamentals.html Modified: llvm/trunk/docs/TableGenFundamentals.html URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/TableGenFundamentals.html?rev=46997&r1=46996&r2=46997&view=diff == --- llvm/trunk/docs/TableGenFundamentals.html (original) +++ llvm/trunk/docs/TableGenFundamentals.html Tue Feb 12 01:12:46 2008 @@ -301,9 +301,7 @@ allows it to describe a wide range of information conveniently and compactly. The TableGen types are: - - bit A 'bit' is a boolean value that can hold either 0 or 1. @@ -337,7 +335,6 @@ This represents a big hunk of text. NOTE: I don't remember why this is distinct from string! - To date, these types have been sufficient for describing things that TableGen has been used for, but it is straight-forward to extend this list if @@ -357,7 +354,6 @@ natural syntax and flavor for the application. The current expression forms supported include: - ? uninitialized field @@ -401,7 +397,6 @@ A string value that is the result of concatenating the 'a' and 'b' strings. - Note that all of the values have rules specifying how they convert to values for different types. These rules allow you to assign a value like "7" ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] [llvm] r46954 - in /llvm/trunk: include/llvm/Target/TargetLowering.h lib/CodeGen/SelectionDAG/DAGCombiner.cpp lib/CodeGen/SelectionDAG/LegalizeDAG.cpp lib/CodeGen/SelectionDAG/LegalizeT
Author: baldrick Date: Mon Feb 11 04:37:04 2008 New Revision: 46954 URL: http://llvm.org/viewvc/llvm-project?rev=46954&view=rev Log: Add a isBigEndian method to complement isLittleEndian. Modified: llvm/trunk/include/llvm/Target/TargetLowering.h llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypesExpand.cpp Modified: llvm/trunk/include/llvm/Target/TargetLowering.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetLowering.h?rev=46954&r1=46953&r2=46954&view=diff == --- llvm/trunk/include/llvm/Target/TargetLowering.h (original) +++ llvm/trunk/include/llvm/Target/TargetLowering.h Mon Feb 11 04:37:04 2008 @@ -85,6 +85,7 @@ TargetMachine &getTargetMachine() const { return TM; } const TargetData *getTargetData() const { return TD; } + bool isBigEndian() const { return !IsLittleEndian; } bool isLittleEndian() const { return IsLittleEndian; } MVT::ValueType getPointerTy() const { return PointerTy; } MVT::ValueType getShiftAmountTy() const { return ShiftAmountTy; } Modified: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp?rev=46954&r1=46953&r2=46954&view=diff == --- llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Mon Feb 11 04:37:04 2008 @@ -1739,7 +1739,7 @@ unsigned PtrOff = LVTStoreBytes - EVTStoreBytes; unsigned Alignment = LN0->getAlignment(); SDOperand NewPtr = LN0->getBasePtr(); -if (!TLI.isLittleEndian()) { +if (TLI.isBigEndian()) { NewPtr = DAG.getNode(ISD::ADD, PtrType, NewPtr, DAG.getConstant(PtrOff, PtrType)); Alignment = MinAlign(Alignment, PtrOff); @@ -3086,7 +3086,7 @@ MVT::ValueType PtrType = N0.getOperand(1).getValueType(); // For big endian targets, we need to adjust the offset to the pointer to // load the correct bytes. -if (!TLI.isLittleEndian()) { +if (TLI.isBigEndian()) { unsigned LVTStoreBits = MVT::getStoreSizeInBits(N0.getValueType()); unsigned EVTStoreBits = MVT::getStoreSizeInBits(EVT); ShAmt = LVTStoreBits - EVTStoreBits - ShAmt; @@ -3460,7 +3460,7 @@ } // For big endian targets, swap the order of the pieces of each element. -if (!TLI.isLittleEndian()) +if (TLI.isBigEndian()) std::reverse(Ops.end()-NumOutputsPerInput, Ops.end()); } MVT::ValueType VT = MVT::getVectorType(DstEltVT, Ops.size()); @@ -4386,7 +4386,7 @@ uint64_t Val = CFP->getValueAPF().convertToAPInt().getZExtValue(); SDOperand Lo = DAG.getConstant(Val & 0x, MVT::i32); SDOperand Hi = DAG.getConstant(Val >> 32, MVT::i32); - if (!TLI.isLittleEndian()) std::swap(Lo, Hi); + if (TLI.isBigEndian()) std::swap(Lo, Hi); int SVOffset = ST->getSrcValueOffset(); unsigned Alignment = ST->getAlignment(); Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46954&r1=46953&r2=46954&view=diff == --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Mon Feb 11 04:37:04 2008 @@ -2117,7 +2117,7 @@ ExpandOp(Tmp2, Lo, Hi); // Big endian systems want the hi reg first. - if (!TLI.isLittleEndian()) + if (TLI.isBigEndian()) std::swap(Lo, Hi); if (Hi.Val) @@ -2256,7 +2256,7 @@ uint64_t IntVal =CFP->getValueAPF().convertToAPInt().getZExtValue(); SDOperand Lo = DAG.getConstant(uint32_t(IntVal), MVT::i32); SDOperand Hi = DAG.getConstant(uint32_t(IntVal >>32), MVT::i32); -if (!TLI.isLittleEndian()) std::swap(Lo, Hi); +if (TLI.isBigEndian()) std::swap(Lo, Hi); Lo = DAG.getStore(Tmp1, Lo, Tmp2, ST->getSrcValue(), SVOffset, isVolatile, Alignment); @@ -2356,7 +2356,7 @@ ExpandOp(Node->getOperand(1), Lo, Hi); IncrementSize = Hi.Val ? MVT::getSizeInBits(Hi.getValueType())/8 : 0; - if (!TLI.isLittleEndian()) + if (TLI.isBigEndian()) std::swap(Lo, Hi); } @@ -5766,7 +5766,7 @@ // Remember that we legalized the chain. Hi = LegalizeOp(Hi); AddLegalizedOperand(Op.getValue(1), Hi.getValue(1)); -if (!TLI.isLittleEndian()) +if (TLI.isBigEndian()) std::swap(Lo, Hi); break; } @@ -5809,7 +5809,7 @@
Re: [llvm-commits] [llvm] r46850 - in /llvm/trunk: lib/Target/X86/X86ISelDAGToDAG.cpp lib/Target/X86/X86Instr64bit.td lib/Target/X86/X86InstrInfo.td lib/Target/X86/X86Subtarget.cpp lib/Target/X86/X86S
Hi Evan, This breaks these: test/CodeGen/X86/fold-mul-lohi.ll test/CodeGen/X86/stride-nine-with-base-reg.ll test/CodeGen/X86/stride-reuse.ll on Linux. These tests should probably explicitly set the relocation model to static so that they always test what they're intended to test. Dan On Feb 7, 2008, at 12:53 AM, Evan Cheng wrote: > Author: evancheng > Date: Thu Feb 7 02:53:49 2008 > New Revision: 46850 > > URL: http://llvm.org/viewvc/llvm-project?rev=46850&view=rev > Log: > Fix a x86-64 codegen deficiency. Allow gv + offset when using rip > addressing mode. > Before: > _main: >subq$8, %rsp >leaq_X(%rip), %rax >movsd 8(%rax), %xmm1 >movss _X(%rip), %xmm0 >call_t >xorl%ecx, %ecx >movl%ecx, %eax >addq$8, %rsp >ret > Now: > _main: >subq$8, %rsp >movsd _X+8(%rip), %xmm1 >movss _X(%rip), %xmm0 >call_t >xorl%ecx, %ecx >movl%ecx, %eax >addq$8, %rsp >ret > > Notice there is another idiotic codegen issue that needs to be fixed > asap: > xorl%ecx, %ecx > movl%ecx, %eax > > Added: >llvm/trunk/test/CodeGen/X86/x86-64-gv-offset.ll > Modified: >llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp >llvm/trunk/lib/Target/X86/X86Instr64bit.td >llvm/trunk/lib/Target/X86/X86InstrInfo.td >llvm/trunk/lib/Target/X86/X86Subtarget.cpp >llvm/trunk/lib/Target/X86/X86Subtarget.h >llvm/trunk/test/CodeGen/X86/pic_jumptable.ll > > Modified: llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp > URL: > http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp?rev=46850&r1=46849&r2=46850&view=diff > > = > = > = > = > = > = > = > = > == > --- llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp (original) > +++ llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp Thu Feb 7 > 02:53:49 2008 > @@ -63,7 +63,7 @@ > int FrameIndex; > } Base; > > -bool isRIPRel; // RIP relative? > +bool isRIPRel; // RIP as base? > unsigned Scale; > SDOperand IndexReg; > unsigned Disp; > @@ -664,7 +664,9 @@ > case X86ISD::Wrapper: { > bool is64Bit = Subtarget->is64Bit(); > // Under X86-64 non-small code model, GV (and friends) are 64- > bits. > -if (is64Bit && TM.getCodeModel() != CodeModel::Small) > +// Also, base and index reg must be 0 in order to use rip as > base. > +if (is64Bit && (TM.getCodeModel() != CodeModel::Small || > +AM.Base.Reg.Val || AM.IndexReg.Val)) > break; > if (AM.GV != 0 || AM.CP != 0 || AM.ES != 0 || AM.JT != -1) > break; > @@ -672,39 +674,27 @@ > // been picked, we can't fit the result available in the > register in the > // addressing mode. Duplicate GlobalAddress or ConstantPool as > displacement. > if (!AlreadySelected || (AM.Base.Reg.Val && AM.IndexReg.Val)) { > - bool isStatic = TM.getRelocationModel() == Reloc::Static; > SDOperand N0 = N.getOperand(0); > - // Mac OS X X86-64 lower 4G address is not available. > - bool isAbs32 = !is64Bit || > -(isStatic && Subtarget->hasLow4GUserSpaceAddress()); > if (GlobalAddressSDNode *G = > dyn_cast(N0)) { > GlobalValue *GV = G->getGlobal(); > -if (isAbs32 || isRoot) { > - AM.GV = GV; > - AM.Disp += G->getOffset(); > - AM.isRIPRel = !isAbs32; > - return false; > -} > +AM.GV = GV; > +AM.Disp += G->getOffset(); > +AM.isRIPRel = is64Bit; > +return false; > } else if (ConstantPoolSDNode *CP = > dyn_cast(N0)) { > -if (isAbs32 || isRoot) { > - AM.CP = CP->getConstVal(); > - AM.Align = CP->getAlignment(); > - AM.Disp += CP->getOffset(); > - AM.isRIPRel = !isAbs32; > - return false; > -} > +AM.CP = CP->getConstVal(); > +AM.Align = CP->getAlignment(); > +AM.Disp += CP->getOffset(); > +AM.isRIPRel = is64Bit; > +return false; > } else if (ExternalSymbolSDNode *S > =dyn_cast(N0)) { > -if (isAbs32 || isRoot) { > - AM.ES = S->getSymbol(); > - AM.isRIPRel = !isAbs32; > - return false; > -} > +AM.ES = S->getSymbol(); > +AM.isRIPRel = is64Bit; > +return false; > } else if (JumpTableSDNode *J = dyn_cast(N0)) { > -if (isAbs32 || isRoot) { > - AM.JT = J->getIndex(); > - AM.isRIPRel = !isAbs32; > - return false; > -} > +AM.JT = J->getIndex(); > +AM.isRIPRel = is64Bit; > +return false; > } > } > break; > @@ -719,7 +709,7 @@ > break; > > case ISD::SHL: > -if (AlreadySelected || AM.IndexReg.Val != 0 || AM.Scale != 1) > +if (AlreadySelected || AM.IndexReg.Val != 0 || AM.Scale != 1 || > AM.isRIPR
[llvm-commits] [llvm] r46991 - /llvm/trunk/docs/CommandGuide/Makefile
Author: lattner Date: Tue Feb 12 00:07:47 2008 New Revision: 46991 URL: http://llvm.org/viewvc/llvm-project?rev=46991&view=rev Log: heavily refactor this to have less duplication between BUILD_FOR_WEBSITE mode and not. Modified: llvm/trunk/docs/CommandGuide/Makefile Modified: llvm/trunk/docs/CommandGuide/Makefile URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/CommandGuide/Makefile?rev=46991&r1=46990&r2=46991&view=diff == --- llvm/trunk/docs/CommandGuide/Makefile (original) +++ llvm/trunk/docs/CommandGuide/Makefile Tue Feb 12 00:07:47 2008 @@ -8,67 +8,59 @@ ##===--===## ifdef BUILD_FOR_WEBSITE - # This special case is for keeping the CommandGuide on the LLVM web site # up to date automatically as the documents are checked in. It must build # the POD files to HTML only and keep them in the src directories. It must also # build in an unconfigured tree, hence the ifdef. To use this, run # make -s BUILD_FOR_WEBSITE=1 inside the cvs commit script. +SRC_DOC_DIR= +DST_HTML_DIR=html/ +DST_MAN_DIR=man/man1/ +DST_PS_DIR=ps/ -POD := $(wildcard *.pod) -HTML := $(patsubst %.pod, html/%.html, $(POD)) -MAN := $(patsubst %.pod, man/man1/%.1, $(POD)) -PS := $(patsubst %.pod, ps/%.ps, $(POD)) - -all: $(HTML) $(MAN) $(PS) - -.SUFFIXES: -.SUFFIXES: .html .pod .1 .ps - -html/%.html: %.pod - pod2html --css=manpage.css --htmlroot=. \ - --podpath=. --noindex --infile=$< --outfile=$@ --title=$* - -man/man1/%.1: %.pod - pod2man --release=CVS --center="LLVM Command Guide" $< $@ - -ps/%.ps: man/man1/%.1 - groff -Tps -man $< > $@ +# If we are in BUILD_FOR_WEBSITE mode, default to the all target. +all:: html man ps clean: rm -f pod2htm*.*~~ $(HTML) $(MAN) $(PS) +else -else - +# Otherwise, if not in BUILD_FOR_WEBSITE mode, use the project info. LEVEL := ../.. - include $(LEVEL)/Makefile.common -POD := $(wildcard $(PROJ_SRC_DIR)/*.pod) +SRC_DOC_DIR=$(PROJ_SRC_DIR)/ +DST_HTML_DIR=$(PROJ_OBJ_DIR)/ +DST_MAN_DIR=$(PROJ_OBJ_DIR)/ +DST_PS_DIR=$(PROJ_OBJ_DIR)/ -EXTRA_DIST := $(POD) index.html +endif -HTML = $(patsubst $(PROJ_SRC_DIR)/%.pod, $(PROJ_OBJ_DIR)/%.html, $(POD)) -MAN = $(patsubst $(PROJ_SRC_DIR)/%.pod, $(PROJ_OBJ_DIR)/%.1, $(POD)) -PS = $(patsubst $(PROJ_SRC_DIR)/%.pod, $(PROJ_OBJ_DIR)/%.ps, $(POD)) + +POD := $(wildcard $(SRC_DOC_DIR)*.pod) +HTML := $(patsubst $(SRC_DOC_DIR)%.pod, $(DST_HTML_DIR)%.html, $(POD)) +MAN := $(patsubst $(SRC_DOC_DIR)%.pod, $(DST_MAN_DIR)%.1, $(POD)) +PS := $(patsubst $(SRC_DOC_DIR)%.pod, $(DST_PS_DIR)%.ps, $(POD)) .SUFFIXES: .SUFFIXES: .html .pod .1 .ps -$(HTML) : html/.dir man/.dir man/man1/.dir ps/.dir +$(DST_HTML_DIR)%.html: %.pod $(DST_HTML_DIR)/.dir + pod2html --css=manpage.css --htmlroot=. \ + --podpath=. --noindex --infile=$< --outfile=$@ --title=$* -html: $(HTML) +$(DST_MAN_DIR)%.1: %.pod $(DST_MAN_DIR)/.dir + pod2man --release=CVS --center="LLVM Command Guide" $< $@ + +$(DST_PS_DIR)%.ps: $(DST_MAN_DIR)%.1 $(DST_PS_DIR)/.dir + groff -Tps -man $< > $@ -$(PROJ_OBJ_DIR)/%.html: %.pod - $(POD2HTML) --css=manpage.css --htmlroot=. --podpath=. \ - --noindex --infile=$< --outfile=$@ --title=$* - -$(PROJ_OBJ_DIR)/%.1: %.pod - $(POD2MAN) --release=$(LLVMVersion) \ - --center="LLVM Command Guide" $< $@ -$(PROJ_OBJ_DIR)/%.ps: $(PROJ_OBJ_DIR)/%.1 - $(GROFF) -Tps -man $< > $@ +html: $(HTML) +man: $(MAN) +ps: $(PS) + +EXTRA_DIST := $(POD) index.html clean-local:: $(Verb) $(RM) -f pod2htm*.*~~ $(HTML) $(MAN) $(PS) @@ -97,5 +89,3 @@ printvars:: $(Echo) "POD: " '$(POD)' $(Echo) "HTML : " '$(HTML)' - -endif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/docs/tutorial/
Changes in directory llvm-www/releases/2.2/docs/tutorial: --- Log message: Directory /var/cvs/llvm/llvm-www/releases/2.2/docs/tutorial added to the repository --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/docs/CommandGuide/
Changes in directory llvm-www/releases/2.2/docs/CommandGuide: --- Log message: Directory /var/cvs/llvm/llvm-www/releases/2.2/docs/CommandGuide added to the repository --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/
Changes in directory llvm-www/releases/2.2: --- Log message: Directory /var/cvs/llvm/llvm-www/releases/2.2 added to the repository --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/releases/2.2/docs/CommandGuide/man/
Changes in directory llvm-www/releases/2.2/docs/CommandGuide/man: --- Log message: Directory /var/cvs/llvm/llvm-www/releases/2.2/docs/CommandGuide/man added to the repository --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits