[llvm-commits] [llvm] r46251 - /llvm/trunk/include/llvm/Support/Compiler.h

2008-01-22 Thread Anton Korobeynikov
Author: asl
Date: Tue Jan 22 05:01:23 2008
New Revision: 46251

URL: http://llvm.org/viewvc/llvm-project?rev=46251&view=rev
Log:
Silence a warning. Should we turn this into configure-time check?

Modified:
llvm/trunk/include/llvm/Support/Compiler.h

Modified: llvm/trunk/include/llvm/Support/Compiler.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Compiler.h?rev=46251&r1=46250&r2=46251&view=diff

==
--- llvm/trunk/include/llvm/Support/Compiler.h (original)
+++ llvm/trunk/include/llvm/Support/Compiler.h Tue Jan 22 05:01:23 2008
@@ -17,7 +17,7 @@
 
 // The VISIBILITY_HIDDEN macro, used for marking classes with the GCC-specific
 // visibility("hidden") attribute.
-#if __GNUC__ >= 4
+#if (__GNUC__ >= 4) && !defined(__MINGW32__)
 #define VISIBILITY_HIDDEN __attribute__ ((visibility("hidden")))
 #else
 #define VISIBILITY_HIDDEN


___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [llvm] r46250 - /llvm/trunk/utils/TableGen/Record.h

2008-01-22 Thread Anton Korobeynikov
Author: asl
Date: Tue Jan 22 05:00:07 2008
New Revision: 46250

URL: http://llvm.org/viewvc/llvm-project?rev=46250&view=rev
Log:
Add interator interface to DAGInit also

Modified:
llvm/trunk/utils/TableGen/Record.h

Modified: llvm/trunk/utils/TableGen/Record.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/Record.h?rev=46250&r1=46249&r2=46250&view=diff

==
--- llvm/trunk/utils/TableGen/Record.h (original)
+++ llvm/trunk/utils/TableGen/Record.h Tue Jan 22 05:00:07 2008
@@ -898,6 +898,28 @@
   virtual Init *resolveReferences(Record &R, const RecordVal *RV);
 
   virtual std::string getAsString() const;
+
+  typedef std::vector::iterator arg_iterator;
+  typedef std::vector::const_iterator   const_arg_iterator;
+  typedef std::vector::iterator   name_iterator;
+  typedef std::vector::const_iterator const_name_iterator;
+
+  inline arg_iteratorarg_begin()   { return Args.begin(); }
+  inline const_arg_iterator  arg_begin() const { return Args.begin(); }
+  inline arg_iteratorarg_end  ()   { return Args.end();   }
+  inline const_arg_iterator  arg_end  () const { return Args.end();   }
+
+  inline size_t  arg_size () const { return Args.size();  }
+  inline boolarg_empty() const { return Args.empty(); }
+
+  inline name_iterator   name_begin()   { return ArgNames.begin(); }
+  inline const_name_iterator name_begin() const { return ArgNames.begin(); }
+  inline name_iterator   name_end  ()   { return ArgNames.end();   }
+  inline const_name_iterator name_end  () const { return ArgNames.end();   }
+
+  inline size_t  name_size () const { return ArgNames.size();  }
+  inline boolname_empty() const { return ArgNames.empty(); }
+
 };
 
 
//===--===//


___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


Re: [llvm-commits] [llvm] r46251 - /llvm/trunk/include/llvm/Support/Compiler.h

2008-01-22 Thread Eric Christopher

On Jan 22, 2008, at 3:01 AM, Anton Korobeynikov wrote:

> Silence a warning. Should we turn this into configure-time check?

Probably. There's a custom one in gcc already (gcc/configure.ac).

-eric
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] a question about type conversion propagation and elimination

2008-01-22 Thread humeafo
I am a newbie to LLVM, so I have to say sorry if I asked the question in the 
wrong place.
In some cases when I generate LLVM IR from machine assembly(with limited type 
information) I have to convert the pointers to I32, after the standard mem2reg 
pass there still are things like:

inttoptr i32 %1 to i8*

While in fact this can be replaced by the I8* operations, because the I8* can 
be unsigned compared, and get rid of the redundant Instrs, Is there any pass
can do this, or is there any tricks to avoid these redundant conversions while 
retain the meaning of the program?

define i8* @tag_on(i8* %ptr, i8* %end, i8 %tag) {
Entry:
ptrtoint i8* %end to i32; :0 [#uses=2]
ptrtoint i8* %ptr to i32; :1 [#uses=4]
icmp ugt i32 %0, %1 ; :2 [#uses=1]
br i1 %2, label %B1, label %B2

B1: ; preds = %Entry
inttoptr i32 %1 to i8*  ; :3 [#uses=1]
store i8 1, i8* %3
add i32 %1, 1   ; :4 [#uses=1]
br label %B2

B2: ; preds = %Entry, %B1
%eax.0 = phi i32 [ %4, %B1 ], [ %1, %Entry ];  
[#uses=4]
icmp ugt i32 %0, %eax.0 ; :5 [#uses=1]
br i1 %5, label %B3, label %exit

B3: ; preds = %B2
inttoptr i32 %eax.0 to i8*  ; :6 [#uses=1]
store i8 1, i8* %6
add i32 %eax.0, 1   ; :7 [#uses=1]
br label %exit

exit:   ; preds = %B2, %B3
%eax.1 = phi i32 [ %7, %B3 ], [ %eax.0, %B2 ]   ;  
[#uses=1]
inttoptr i32 %eax.1 to i8*  ; :8 [#uses=1]
ret i8* %8
}




humeafo
2008-01-22
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


Re: [llvm-commits] a question about type conversion propagation and elimination

2008-01-22 Thread Chris Lattner


On Jan 22, 2008, at 2:10 AM, humeafo wrote:

I am a newbie to LLVM, so I have to say sorry if I asked the  
question in the wrong place.
In some cases when I generate LLVM IR from machine assembly(with  
limited type information) I have to convert the pointers to I32,  
after the standard mem2reg pass there still are things like:


inttoptr i32 %1 to i8*

While in fact this can be replaced by the I8* operations, because  
the I8* can be unsigned compared, and get rid of the redundant  
Instrs, Is there any pass
can do this, or is there any tricks to avoid these redundant  
conversions while retain the meaning of the program?


Sure, the instcombine pass will do this.  Make sure to add the correct  
target data string though.  For example, if I add the datalayout  
string for x86-32 darwin:


target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32- 
i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64- 
f80:128:128"


Instcombine produces:

define i8* @tag_on(i8* %ptr, i8* %end, i8 %tag) {
Entry:
icmp ugt i8* %end, %ptr ; :0 [#uses=1]
br i1 %0, label %B1, label %B2

B1: ; preds = %Entry
store i8 1, i8* %ptr
%ctg2 = getelementptr i8* %ptr, i32 1   ;  [#uses=1]
br label %B2

B2: ; preds = %B1, %Entry
%eax.0.in = phi i8* [ %ctg2, %B1 ], [ %ptr, %Entry ];  
[#uses=4]
icmp ult i8* %eax.0.in, %end; :1 [#uses=1]
br i1 %1, label %B3, label %exit

B3: ; preds = %B2
store i8 1, i8* %eax.0.in
%ctg21 = getelementptr i8* %eax.0.in, i32 1 ;  
[#uses=1]
br label %exit

exit:   ; preds = %B3, %B2
	%eax.1.in = phi i8* [ %ctg21, %B3 ], [ %eax.0.in, %B2 ]		;   
[#uses=1]

ret i8* %eax.1.in
}

Note that it eliminated all the ptrtoint casts (in this case) and  
infered some getelementptrs.


I'm sending this to the llvmdev list, which is a better place for high- 
level questions than llvm-commits.


-Chris



define i8* @tag_on(i8* %ptr, i8* %end, i8 %tag) {
Entry:
ptrtoint i8* %end to i32; :0 [#uses=2]
ptrtoint i8* %ptr to i32; :1 [#uses=4]
icmp ugt i32 %0, %1 ; :2 [#uses=1]
br i1 %2, label %B1, label %B2

B1: ; preds = %Entry
inttoptr i32 %1 to i8*  ; :3 [#uses=1]
store i8 1, i8* %3
add i32 %1, 1   ; :4 [#uses=1]
br label %B2

B2: ; preds = %Entry, %B1
%eax.0 = phi i32 [ %4, %B1 ], [ %1, %Entry ];  
 [#uses=4]

icmp ugt i32 %0, %eax.0 ; :5 [#uses=1]
br i1 %5, label %B3, label %exit

B3: ; preds = %B2
inttoptr i32 %eax.0 to i8*  ; :6 [#uses=1]
store i8 1, i8* %6
add i32 %eax.0, 1   ; :7 [#uses=1]
br label %exit

exit:   ; preds = %B2, %B3
%eax.1 = phi i32 [ %7, %B3 ], [ %eax.0, %B2 ]   ;  
 [#uses=1]

inttoptr i32 %eax.1 to i8*  ; :8 [#uses=1]
ret i8* %8
}

humeafo
2008-01-22
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [llvm] r46254 - /llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

2008-01-22 Thread Chris Lattner
Author: lattner
Date: Tue Jan 22 13:09:33 2008
New Revision: 46254

URL: http://llvm.org/viewvc/llvm-project?rev=46254&view=rev
Log:
Simplify SelectionDAG::getNode so that a big switch stmt is not #ifndef 
NDEBUG.  This is in response to a really nasty bug I introduced that 
Dale tracked down, hopefully this won't happen in the future.  
Many thanks Dale.

Modified:
llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp?rev=46254&r1=46253&r2=46254&view=diff

==
--- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Tue Jan 22 13:09:33 
2008
@@ -1859,15 +1859,34 @@
 
 SDOperand SelectionDAG::getNode(unsigned Opcode, MVT::ValueType VT,
 SDOperand N1, SDOperand N2) {
-#ifndef NDEBUG
+  ConstantSDNode *N1C = dyn_cast(N1.Val);
+  ConstantSDNode *N2C = dyn_cast(N2.Val);
   switch (Opcode) {
+  default: break;
   case ISD::TokenFactor:
 assert(VT == MVT::Other && N1.getValueType() == MVT::Other &&
N2.getValueType() == MVT::Other && "Invalid token factor!");
+// Fold trivial token factors.
+if (N1.getOpcode() == ISD::EntryToken) return N2;
+if (N2.getOpcode() == ISD::EntryToken) return N1;
 break;
   case ISD::AND:
+assert(MVT::isInteger(VT) && N1.getValueType() == N2.getValueType() &&
+   N1.getValueType() == VT && "Binary operator types must match!");
+// (X & 0) -> 0.  This commonly occurs when legalizing i64 values, so it's
+// worth handling here.
+if (N2C && N2C->getValue() == 0)
+  return N2;
+break;
   case ISD::OR:
   case ISD::XOR:
+assert(MVT::isInteger(VT) && N1.getValueType() == N2.getValueType() &&
+   N1.getValueType() == VT && "Binary operator types must match!");
+// (X ^| 0) -> X.  This commonly occurs when legalizing i64 values, so it's
+// worth handling here.
+if (N2C && N2C->getValue() == 0)
+  return N1;
+break;
   case ISD::UDIV:
   case ISD::UREM:
   case ISD::MULHU:
@@ -1879,8 +1898,6 @@
   case ISD::MUL:
   case ISD::SDIV:
   case ISD::SREM:
-assert(MVT::isInteger(N1.getValueType()) && "Should use F* for FP ops");
-// fall through.
   case ISD::FADD:
   case ISD::FSUB:
   case ISD::FMUL:
@@ -1912,6 +1929,7 @@
"Cannot FP_ROUND_INREG integer types");
 assert(MVT::getSizeInBits(EVT) <= MVT::getSizeInBits(VT) &&
"Not rounding down!");
+if (cast(N2)->getVT() == VT) return N1;  // Not actually 
rounding.
 break;
   }
   case ISD::FP_ROUND:
@@ -1919,33 +1937,83 @@
MVT::isFloatingPoint(N1.getValueType()) &&
MVT::getSizeInBits(VT) <= MVT::getSizeInBits(N1.getValueType()) &&
isa(N2) && "Invalid FP_ROUND!");
+if (N1.getValueType() == VT) return N1;  // noop conversion.
 break;
   case ISD::AssertSext:
-  case ISD::AssertZext:
-  case ISD::SIGN_EXTEND_INREG: {
+  case ISD::AssertZext: {
 MVT::ValueType EVT = cast(N2)->getVT();
 assert(VT == N1.getValueType() && "Not an inreg extend!");
 assert(MVT::isInteger(VT) && MVT::isInteger(EVT) &&
"Cannot *_EXTEND_INREG FP types");
 assert(MVT::getSizeInBits(EVT) <= MVT::getSizeInBits(VT) &&
"Not extending!");
+break;
   }
+  case ISD::SIGN_EXTEND_INREG: {
+MVT::ValueType EVT = cast(N2)->getVT();
+assert(VT == N1.getValueType() && "Not an inreg extend!");
+assert(MVT::isInteger(VT) && MVT::isInteger(EVT) &&
+   "Cannot *_EXTEND_INREG FP types");
+assert(MVT::getSizeInBits(EVT) <= MVT::getSizeInBits(VT) &&
+   "Not extending!");
+if (EVT == VT) return N1;  // Not actually extending
 
-  default: break;
-  }
-#endif
-
-  ConstantSDNode *N1C = dyn_cast(N1.Val);
-  ConstantSDNode *N2C = dyn_cast(N2.Val);
-  if (N1C) {
-if (Opcode == ISD::SIGN_EXTEND_INREG) {
+if (N1C) {
   int64_t Val = N1C->getValue();
   unsigned FromBits = MVT::getSizeInBits(cast(N2)->getVT());
   Val <<= 64-FromBits;
   Val >>= 64-FromBits;
   return getConstant(Val, VT);
 }
+break;
+  }
+  case ISD::EXTRACT_VECTOR_ELT:
+assert(N2C && "Bad EXTRACT_VECTOR_ELT!");
+
+// EXTRACT_VECTOR_ELT of CONCAT_VECTORS is often formed while lowering is
+// expanding copies of large vectors from registers.
+if (N1.getOpcode() == ISD::CONCAT_VECTORS &&
+N1.getNumOperands() > 0) {
+  unsigned Factor =
+MVT::getVectorNumElements(N1.getOperand(0).getValueType());
+  return getNode(ISD::EXTRACT_VECTOR_ELT, VT,
+ N1.getOperand(N2C->getValue() / Factor),
+ getConstant(N2C->getValue() % Factor, N2.getValueType()));
+}
+
+// EXTRACT_VECTOR_ELT of BUILD_VECTOR is often formed while lowering is
+// exp

Re: [llvm-commits] [llvm] r46220 - /llvm/trunk/test/CFrontend/2008-01-21-PackedStructField.c

2008-01-22 Thread Tanya Lattner
This fails with llvm-gcc-4.0, darwin 8, x86.

../../src/gcc/llvm-types.cpp:82: failed assertion `(!TYPE_SIZE(Tr)  
|| !Ty->isSized() || !isInt64(TYPE_SIZE(Tr), true) || getInt64 
(TYPE_SIZE(Tr), true) == getTargetData().getABITypeSizeInBits(Ty)) &&  
"LLVM type size doesn't match GCC type size!"'

2008-01-21-PackedBitFields.c is also failing for me.

-Tanya

On Jan 21, 2008, at 2:15 PM, Devang Patel wrote:

> Author: dpatel
> Date: Mon Jan 21 16:15:58 2008
> New Revision: 46220
>
> URL: http://llvm.org/viewvc/llvm-project?rev=46220&view=rev
> Log:
> New test.
>
> Added:
> llvm/trunk/test/CFrontend/2008-01-21-PackedStructField.c
>
> Added: llvm/trunk/test/CFrontend/2008-01-21-PackedStructField.c
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CFrontend/ 
> 2008-01-21-PackedStructField.c?rev=46220&view=auto
>
> == 
> 
> --- llvm/trunk/test/CFrontend/2008-01-21-PackedStructField.c (added)
> +++ llvm/trunk/test/CFrontend/2008-01-21-PackedStructField.c Mon  
> Jan 21 16:15:58 2008
> @@ -0,0 +1,5 @@
> +// RUN: %llvmgcc %s -S -o -
> +
> +struct X { long double b; unsigned char c; double __attribute__ 
> ((packed)) d; };
> +struct X x = { 3.0L, 5, 3.0 };
> +
>
>
> ___
> llvm-commits mailing list
> llvm-commits@cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [llvm-gcc-4.2] r46261 - /llvm-gcc-4.2/trunk/gcc/objc/objc-act.c

2008-01-22 Thread Bill Wendling
Author: void
Date: Tue Jan 22 17:06:58 2008
New Revision: 46261

URL: http://llvm.org/viewvc/llvm-project?rev=46261&view=rev
Log:
We were getting this error:

embedding a directive within macro arguments is not portable

build_tree_list is a macro...

Modified:
llvm-gcc-4.2/trunk/gcc/objc/objc-act.c

Modified: llvm-gcc-4.2/trunk/gcc/objc/objc-act.c
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/objc/objc-act.c?rev=46261&r1=46260&r2=46261&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/objc/objc-act.c (original)
+++ llvm-gcc-4.2/trunk/gcc/objc/objc-act.c Tue Jan 22 17:06:58 2008
@@ -10867,14 +10867,14 @@
 
   /* LLVM LOCAL begin make initializer size match type size */
   /* APPLE LOCAL ObjC new abi */
-  initlist = build_tree_list (NULL_TREE, build_int_cst (
 #ifdef OBJCPLUS
-  NULL_TREE,
+  initlist = build_tree_list (NULL_TREE,
+ build_int_cst (NULL_TREE, init_val));
 #else
-  newabi ? NULL_TREE : ptr_type_node,
+  initlist = build_tree_list (NULL_TREE,
+  build_int_cst (newabi ? NULL_TREE : 
ptr_type_node,
+init_val));
 #endif
-
-init_val));
   /* LLVM LOCAL end */
   initlist = tree_cons (NULL_TREE, build_int_cst (NULL_TREE, size), initlist);
   initlist = tree_cons (NULL_TREE, list, initlist);


___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [llvm] r46262 - in /llvm/trunk: lib/Target/X86/X86CallingConv.td test/CodeGen/X86/sse-varargs.ll

2008-01-22 Thread Evan Cheng
Author: evancheng
Date: Tue Jan 22 17:26:53 2008
New Revision: 46262

URL: http://llvm.org/viewvc/llvm-project?rev=46262&view=rev
Log:
SSE varargs arguments are passed in memory.

Added:
llvm/trunk/test/CodeGen/X86/sse-varargs.ll
Modified:
llvm/trunk/lib/Target/X86/X86CallingConv.td

Modified: llvm/trunk/lib/Target/X86/X86CallingConv.td
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86CallingConv.td?rev=46262&r1=46261&r2=46262&view=diff

==
--- llvm/trunk/lib/Target/X86/X86CallingConv.td (original)
+++ llvm/trunk/lib/Target/X86/X86CallingConv.td Tue Jan 22 17:26:53 2008
@@ -190,8 +190,8 @@
   CCIfType<[f80], CCAssignToStack<0, 4>>,
 
   // The first 4 vector arguments are passed in XMM registers.
-  CCIfType<[v16i8, v8i16, v4i32, v2i64, v4f32, v2f64],
-  CCAssignToReg<[XMM0, XMM1, XMM2, XMM3]>>,
+  CCIfNotVarArg>>,
 
   // Other vectors get 16-byte stack slots that are 16-byte aligned.
   CCIfType<[v16i8, v8i16, v4i32, v2i64, v4f32, v2f64], CCAssignToStack<16, 
16>>,

Added: llvm/trunk/test/CodeGen/X86/sse-varargs.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/sse-varargs.ll?rev=46262&view=auto

==
--- llvm/trunk/test/CodeGen/X86/sse-varargs.ll (added)
+++ llvm/trunk/test/CodeGen/X86/sse-varargs.ll Tue Jan 22 17:26:53 2008
@@ -0,0 +1,9 @@
+; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 | grep xmm | grep esp
+
+define i32 @t() nounwind  {
+entry:
+   tail call void (i32, ...)* @foo( i32 1, <4 x i32> < i32 10, i32 11, i32 
12, i32 13 > ) nounwind 
+   ret i32 0
+}
+
+declare void @foo(i32, ...)


___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [llvm] r46263 - /llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp

2008-01-22 Thread Owen Anderson
Author: resistor
Date: Tue Jan 22 17:58:54 2008
New Revision: 46263

URL: http://llvm.org/viewvc/llvm-project?rev=46263&view=rev
Log:
Fix an iterator invalidation issue.

Modified:
llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp

Modified: llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp?rev=46263&r1=46262&r2=46263&view=diff

==
--- llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp (original)
+++ llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Tue Jan 22 17:58:54 2008
@@ -751,11 +751,17 @@
   // FIXME: Insert last-minute copies
   
   // Remove PHIs
-  for (MachineFunction::iterator I = Fn.begin(), E = Fn.end(); I != E; ++I)
+  std::vector phis;
+  for (MachineFunction::iterator I = Fn.begin(), E = Fn.end(); I != E; ++I) {
 for (MachineBasicBlock::iterator BI = I->begin(), BE = I->end();
  BI != BE; ++BI)
   if (BI->getOpcode() == TargetInstrInfo::PHI)
-BI->eraseFromParent();
+phis.push_back(BI);
+  }
+  
+  for (std::vector::iterator I = phis.begin(), E = phis.end();
+   I != E; ++I)
+(*I)->eraseFromParent();
   
   return false;
 }


___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [llvm-gcc-4.0] r46264 - in /llvm-gcc-4.0/trunk/gcc: llvm-internal.h llvm-types.cpp

2008-01-22 Thread Devang Patel
Author: dpatel
Date: Tue Jan 22 18:07:02 2008
New Revision: 46264

URL: http://llvm.org/viewvc/llvm-project?rev=46264&view=rev
Log:
Backport patches(r46210 and r46212) from llvm-gcc-4.2

Modified:
llvm-gcc-4.0/trunk/gcc/llvm-internal.h
llvm-gcc-4.0/trunk/gcc/llvm-types.cpp

Modified: llvm-gcc-4.0/trunk/gcc/llvm-internal.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-internal.h?rev=46264&r1=46263&r2=46264&view=diff

==
--- llvm-gcc-4.0/trunk/gcc/llvm-internal.h (original)
+++ llvm-gcc-4.0/trunk/gcc/llvm-internal.h Tue Jan 22 18:07:02 2008
@@ -157,7 +157,7 @@
 private:
   const Type *ConvertRECORD(tree_node *type, tree_node *orig_type);
   const Type *ConvertUNION(tree_node *type, tree_node *orig_type);
-  void DecodeStructFields(tree_node *Field, StructTypeConversionInfo &Info);
+  bool DecodeStructFields(tree_node *Field, StructTypeConversionInfo &Info);
   void DecodeStructBitField(tree_node *Field, StructTypeConversionInfo &Info);
 };
 

Modified: llvm-gcc-4.0/trunk/gcc/llvm-types.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-types.cpp?rev=46264&r1=46263&r2=46264&view=diff

==
--- llvm-gcc-4.0/trunk/gcc/llvm-types.cpp (original)
+++ llvm-gcc-4.0/trunk/gcc/llvm-types.cpp Tue Jan 22 18:07:02 2008
@@ -1180,6 +1180,8 @@
 ExtraBitsAvailable = E;
   }
 
+  bool isPacked() { return Packed; }
+
   void markAsPacked() {
 Packed = true;
   }
@@ -1427,37 +1429,9 @@
 
   void addNewBitField(unsigned Size, unsigned FirstUnallocatedByte);
 
-  void convertToPacked();
-  
   void dump() const;
 };
 
-// LLVM disagrees as to where to put field natural field ordering.
-// ordering.  Therefore convert to a packed struct.
-void StructTypeConversionInfo::convertToPacked() {
-  assert (!Packed && "Packing a packed struct!");
-  Packed = true;
-  
-  // Fill the padding that existed from alignment restrictions
-  // with byte arrays to ensure the same layout when converting
-  // to a packed struct.
-  for (unsigned x = 1; x < ElementOffsetInBytes.size(); ++x) {
-if (ElementOffsetInBytes[x-1] + ElementSizeInBytes[x-1]
-< ElementOffsetInBytes[x]) {
-  uint64_t padding = ElementOffsetInBytes[x]
-- ElementOffsetInBytes[x-1] - ElementSizeInBytes[x-1];
-  const Type *Pad = Type::Int8Ty;
-  Pad = ArrayType::get(Pad, padding);
-  ElementOffsetInBytes.insert(ElementOffsetInBytes.begin() + x,
-  ElementOffsetInBytes[x-1] +
-  ElementSizeInBytes[x-1]);
-  ElementSizeInBytes.insert(ElementSizeInBytes.begin() + x, padding);
-  Elements.insert(Elements.begin() + x, Pad);
-  PaddingElement.insert(PaddingElement.begin() + x, true);
-}
-  }
-}
-
 // Add new element which is a bit field. Size is not the size of bit filed,
 // but size of bits required to determine type of new Field which will be
 // used to access this bit field.
@@ -1545,17 +1519,18 @@
 
 /// DecodeStructFields - This method decodes the specified field, if it is a
 /// FIELD_DECL, adding or updating the specified StructTypeConversionInfo to
-/// reflect it.  
-void TypeConverter::DecodeStructFields(tree Field,
+/// reflect it.  Return tree if field is decode correctly. Otherwise return
+/// false.
+bool TypeConverter::DecodeStructFields(tree Field,
StructTypeConversionInfo &Info) {
   if (TREE_CODE(Field) != FIELD_DECL ||
   TREE_CODE(DECL_FIELD_OFFSET(Field)) != INTEGER_CST)
-return;
+return true;
 
   // Handle bit-fields specially.
   if (DECL_BIT_FIELD_TYPE(Field)) {
 DecodeStructBitField(Field, Info);
-return;
+return true;
   }
 
   Info.allFieldsAreNotBitFields();
@@ -1573,12 +1548,19 @@
   if (!Info.ResizeLastElementIfOverlapsWith(StartOffsetInBytes, Field, Ty)) {
 // LLVM disagrees as to where this field should go in the natural field
 // ordering.  Therefore convert to a packed struct and try again.
-Info.convertToPacked();
-DecodeStructFields(Field, Info);
+return false;
+  }
+  else if (TYPE_USER_ALIGN(TREE_TYPE(Field))
+   && DECL_ALIGN_UNIT(Field) != Info.getTypeAlignment(Ty)
+   && !Info.isPacked()) {
+// If Field has user defined alignment and it does not match Ty alignment
+// then convert to a packed struct and try again.
+return false;
   } else 
 // At this point, we know that adding the element will happen at the right
 // offset.  Add it.
 Info.addElement(Ty, StartOffsetInBytes, Info.getTypeSize(Ty));
+  return true;
 }
 
 /// DecodeStructBitField - This method decodes the specified bit-field, adding
@@ -1735,8 +1717,24 @@
 
   
   // Convert over all of the elements of the struct.
-  for (tree Field = TYPE_FIELDS(type); Field; Field = TREE_CHAIN(Field))
-DecodeStru

[llvm-commits] [llvm-gcc-4.2] r46265 - /llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp

2008-01-22 Thread Dale Johannesen
Author: johannes
Date: Tue Jan 22 18:48:04 2008
New Revision: 46265

URL: http://llvm.org/viewvc/llvm-project?rev=46265&view=rev
Log:
Fix handling of CONST_DECL with section information.


Modified:
llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp

Modified: llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp?rev=46265&r1=46264&r2=46265&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp Tue Jan 22 18:48:04 2008
@@ -919,15 +919,6 @@
   GV->setSection(Section);
 #endif
 }
-#ifdef LLVM_IMPLICIT_TARGET_GLOBAL_VAR_SECTION
-else if (TREE_CODE(decl) == CONST_DECL) {
-  if (const char *Section = 
-  LLVM_IMPLICIT_TARGET_GLOBAL_VAR_SECTION(decl)) {
-GV->setSection(Section);
-  }
-}
-#endif
-
 
 // Set the alignment for the global if one of the following condition is 
met
 // 1) DECL_ALIGN_UNIT does not match alignment as per ABI specification
@@ -947,8 +938,16 @@
 // Add annotate attributes for globals
 if (DECL_ATTRIBUTES(decl))
   AddAnnotateAttrsToGlobal(GV, decl);
-  }
   
+#ifdef LLVM_IMPLICIT_TARGET_GLOBAL_VAR_SECTION
+  } else if (TREE_CODE(decl) == CONST_DECL) {
+if (const char *Section = 
+LLVM_IMPLICIT_TARGET_GLOBAL_VAR_SECTION(decl)) {
+  GV->setSection(Section);
+}
+#endif
+  }
+
   if (TheDebugInfo) TheDebugInfo->EmitGlobalVariable(GV, decl); 
 
   TREE_ASM_WRITTEN(decl) = 1;


___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [llvm-gcc-4.2] r46266 - /llvm-gcc-4.2/trunk/gcc/config/darwin.c

2008-01-22 Thread Dale Johannesen
Author: johannes
Date: Tue Jan 22 18:48:48 2008
New Revision: 46266

URL: http://llvm.org/viewvc/llvm-project?rev=46266&view=rev
Log:
Cosmetic changes to placate gcc testsuite.


Modified:
llvm-gcc-4.2/trunk/gcc/config/darwin.c

Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.c
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/darwin.c?rev=46266&r1=46265&r2=46266&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/config/darwin.c (original)
+++ llvm-gcc-4.2/trunk/gcc/config/darwin.c Tue Jan 22 18:48:48 2008
@@ -1527,11 +1527,11 @@
 
 if (!strcmp(IDENTIFIER_POINTER(typename), "__builtin_ObjCString")) {
   if (flag_next_runtime)
-return "__OBJC,__cstring_object,regular,no_dead_strip";
+return "__OBJC, __cstring_object,regular,no_dead_strip";
   else
-return "__OBJC,__string_object,no_dead_strip";
+return "__OBJC, __string_object,no_dead_strip";
 } else if (!strcmp(IDENTIFIER_POINTER(typename), "__builtin_CFString")) {
-  return "__DATA,__cfstring";
+  return "__DATA, __cfstring";
 } else {
   return 0;
 }
@@ -1580,7 +1580,7 @@
 return "__OBJC,__module_info,regular,no_dead_strip";
   else if (!strncmp (name, "IMAGE_INFO", 10))
 return (flag_objc_abi == 1 ? 
-"__OBJC,__image_info,regular" /*,no_dead_strip";*/ :
+"__OBJC, __image_info,regular" /*,no_dead_strip";*/ :
 "__DATA, __objc_imageinfo, regular, no_dead_strip");
   else if (!strncmp (name, "PROTOCOL_INSTANCE_METHODS_", 26))
 return "__OBJC,__cat_inst_meth,regular,no_dead_strip";


___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [llvm] r46267 - in /llvm/trunk/lib/Target: ARM/ARMAsmPrinter.cpp PowerPC/PPCAsmPrinter.cpp X86/X86AsmPrinter.cpp

2008-01-22 Thread Dale Johannesen
Author: johannes
Date: Tue Jan 22 18:58:14 2008
New Revision: 46267

URL: http://llvm.org/viewvc/llvm-project?rev=46267&view=rev
Log:
Honor explicit section information on Darwin.


Modified:
llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp
llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp
llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp

Modified: llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp?rev=46267&r1=46266&r2=46267&view=diff

==
--- llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp Tue Jan 22 18:58:14 2008
@@ -908,6 +908,10 @@
 std::string SectionName = ".section " + I->getSection();
 SectionName += ",\"aw\",%progbits";
 SwitchToDataSection(SectionName.c_str());
+  } else if (I->hasSection() && Subtarget->isTargetDarwin()) {
+// Honor all section names on Darwin; ObjC uses this
+std::string SectionName = ".section " + I->getSection();
+SwitchToDataSection(SectionName.c_str());
   } else {
 if (C->isNullValue() && !NoZerosInBSS && TAI->getBSSSection())
   SwitchToDataSection(I->isThreadLocal() ? TAI->getTLSBSSSection() :

Modified: llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp?rev=46267&r1=46266&r2=46267&view=diff

==
--- llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp Tue Jan 22 18:58:14 2008
@@ -958,8 +958,11 @@
 break;
   }
 }
-
-if (!I->isConstant())
+if (I->hasSection()) {
+  // Honor all section names on Darwin; ObjC uses this
+  std::string SectionName = ".section " + I->getSection();
+  SwitchToDataSection(SectionName.c_str());
+} else if (!I->isConstant())
   SwitchToDataSection(TAI->getDataSection(), I);
 else {
   // Read-only data.

Modified: llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp?rev=46267&r1=46266&r2=46267&view=diff

==
--- llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp Tue Jan 22 18:58:14 2008
@@ -275,7 +275,10 @@
   assert(!Subtarget->isTargetDarwin());
   SectionName += ",\"aw\",@progbits";
 }
-
+SwitchToDataSection(SectionName.c_str());
+  } else if (I->hasSection() && Subtarget->isTargetDarwin()) {
+// Honor all section names on Darwin; ObjC uses this
+std::string SectionName = ".section " + I->getSection();
 SwitchToDataSection(SectionName.c_str());
   } else {
 if (C->isNullValue() && !NoZerosInBSS && TAI->getBSSSection())


___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [llvm-gcc-4.2] r46269 - in /llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg: const-cfstring-4-64bit.mm const-cfstring-4.mm const-str-10.mm const-str-11.mm const-str-9.mm objc-gc-section-1.m

2008-01-22 Thread Dale Johannesen
Author: johannes
Date: Tue Jan 22 19:40:15 2008
New Revision: 46269

URL: http://llvm.org/viewvc/llvm-project?rev=46269&view=rev
Log:
Enhance some more tests to take functionally
equivalent llvm syntax.


Modified:
llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-cfstring-4-64bit.mm
llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-cfstring-4.mm
llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-str-10.mm
llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-str-11.mm
llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-str-9.mm
llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/objc-gc-section-1.mm
llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/objc-gc-section-2.mm
llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/objc2-protocol-ext-1.mm

Modified: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-cfstring-4-64bit.mm
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/const-cfstring-4-64bit.mm?rev=46269&r1=46268&r2=46269&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-cfstring-4-64bit.mm 
(original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-cfstring-4-64bit.mm Tue 
Jan 22 19:40:15 2008
@@ -8,4 +8,5 @@
 CFStringRef appKey = (CFStringRef) @"com.apple.soundpref";
 
 /* { dg-final { scan-assembler ".section __DATA, __cfstring" } } */
-/* { dg-final { scan-assembler 
".quad\t___CFConstantStringClassReference\n\t.long\t1992\n\t.space 
4\n\t.quad\t.*\n\t.quad\t19\n\t.data" } } */
+/* LLVM LOCAL accept llvm syntax */
+/* { dg-final { scan-assembler 
".quad\t___CFConstantStringClassReference\n\t.long\t1992\n\t.space( 
|\t)4\n\t.quad\t.*\n\t.quad\t19\n" } } */

Modified: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-cfstring-4.mm
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/const-cfstring-4.mm?rev=46269&r1=46268&r2=46269&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-cfstring-4.mm (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-cfstring-4.mm Tue Jan 22 
19:40:15 2008
@@ -10,4 +10,5 @@
 CFStringRef appKey = (CFStringRef) @"com.apple.soundpref";
 
 /* { dg-final { scan-assembler ".section __DATA, __cfstring" } } */
-/* { dg-final { scan-assembler 
".long\t___CFConstantStringClassReference\n\t.long\t1992\n\t.long\t.*\n\t.long\t19\n\t.data"
 } } */
+/* LLVM LOCAL accept llvm syntax */
+/* { dg-final { scan-assembler 
".long\t___CFConstantStringClassReference\n\t.long\t1992\n\t.long\t.*\n\t.long\t19\n"
 } } */

Modified: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-str-10.mm
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/const-str-10.mm?rev=46269&r1=46268&r2=46269&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-str-10.mm (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-str-10.mm Tue Jan 22 
19:40:15 2008
@@ -31,4 +31,5 @@
 const NSConstantString *appKey = @"MyApp";
 
 /* { dg-final { scan-assembler ".section __OBJC, __cstring_object" } } */
-/* { dg-final { scan-assembler 
".long\t__NSConstantStringClassReference\n\t.long\t.*\n\t.long\t5\n\t.data" } } 
*/
+/* LLVM LOCAL accept llvm syntax */
+/* { dg-final { scan-assembler 
".long\t__NSConstantStringClassReference\n\t.long\t.*\n\t.long\t5\n" } } */

Modified: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-str-11.mm
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/const-str-11.mm?rev=46269&r1=46268&r2=46269&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-str-11.mm (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-str-11.mm Tue Jan 22 
19:40:15 2008
@@ -30,4 +30,5 @@
 const XStr *appKey = @"MyApp";
 
 /* { dg-final { scan-assembler ".section __OBJC, __cstring_object" } } */
-/* { dg-final { scan-assembler 
".long\t__XStrClassReference\n\t.long\t.*\n\t.long\t5\n\t.data" } } */
+/* LLVM LOCAL accept llvm syntax */
+/* { dg-final { scan-assembler 
".long\t__XStrClassReference\n\t.long\t.*\n\t.long\t5\n" } } */

Modified: llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-str-9.mm
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/obj-c%2B%2B.dg/const-str-9.mm?rev=46269&r1=46268&r2=46269&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-str-9.mm (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/obj-c++.dg/const-str-9.mm Tue Jan 22 
19:40:15 2008
@@ -23,4 +23,5 @@
 const NSConstantString *appKey = @"MyApp";
 
 /* { dg-final { scan-assembler ".section __OBJC, __cstring_object" } } */
-/* { dg-final { scan-assembler 
".long\t__NSConstantStringCl

[llvm-commits] [llvm-gcc-4.2] r46270 - in /llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg: const-cfstring-4-64bit.m const-cfstring-4.m const-str-10-64bit.m const-str-10.m const-str-11-64bit.m const-str-11.m

2008-01-22 Thread Dale Johannesen
Author: johannes
Date: Tue Jan 22 19:42:09 2008
New Revision: 46270

URL: http://llvm.org/viewvc/llvm-project?rev=46270&view=rev
Log:
Yet more test enhancements to take functionally
equivalent llvm syntax.


Modified:
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-4-64bit.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-4.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-10-64bit.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-10.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-11-64bit.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-11.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-9-64bit.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-9.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/image-info.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-alignment-test-1.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-const-str-64bit-1.m
llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/objc2-protocol-ext-1.m

Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-4-64bit.m
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-4-64bit.m?rev=46270&r1=46269&r2=46270&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-4-64bit.m (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-4-64bit.m Tue Jan 
22 19:42:09 2008
@@ -8,4 +8,5 @@
 static CFStringRef appKey = (CFStringRef) @"com.apple.soundpref";
 
 /* { dg-final { scan-assembler ".section __DATA, __cfstring" } } */
-/* { dg-final { scan-assembler 
".quad\t___CFConstantStringClassReference\n\t.long\t1992\n\t.space 
4\n\t.quad\t.*\n\t.quad\t19\n\t.data" } } */
+/* LLVM LOCAL accept llvm syntax */
+/* { dg-final { scan-assembler 
".quad\t___CFConstantStringClassReference\n\t.long\t1992\n\t.space( 
|\t)4\n\t.quad\t.*\n\t.quad\t19\n" } } */

Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-4.m
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-4.m?rev=46270&r1=46269&r2=46270&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-4.m (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-cfstring-4.m Tue Jan 22 
19:42:09 2008
@@ -10,4 +10,5 @@
 static CFStringRef appKey = (CFStringRef) @"com.apple.soundpref";
 
 /* { dg-final { scan-assembler ".section __DATA, __cfstring" } } */
-/* { dg-final { scan-assembler 
".long\t___CFConstantStringClassReference\n\t.long\t1992\n\t.long\t.*\n\t.long\t19\n\t.data"
 } } */
+/* LLVM LOCAL accept llvm syntax */
+/* { dg-final { scan-assembler 
".long\t___CFConstantStringClassReference\n\t.long\t1992\n\t.long\t.*\n\t.long\t19\n"
 } } */

Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-10-64bit.m
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-10-64bit.m?rev=46270&r1=46269&r2=46270&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-10-64bit.m (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-10-64bit.m Tue Jan 22 
19:42:09 2008
@@ -30,4 +30,5 @@
 const NSConstantString *appKey = @"MyApp";
 
 /* { dg-final { scan-assembler ".section __OBJC, __cstring_object" } } */
-/* { dg-final { scan-assembler 
".quad\t__NSConstantStringClassReference\n\t.quad\t.*\n\t.long\t5\n\t.space 
4\n\t.data" } } */
+/* LLVM LOCAL accept llvm syntax */
+/* { dg-final { scan-assembler 
".quad\t__NSConstantStringClassReference\n\t.quad\t.*\n\t.long\t5\n\t.space( 
|\t)4\n" } } */

Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-10.m
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-10.m?rev=46270&r1=46269&r2=46270&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-10.m (original)
+++ llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-10.m Tue Jan 22 19:42:09 
2008
@@ -33,4 +33,5 @@
 const NSConstantString *appKey = @"MyApp";
 
 /* { dg-final { scan-assembler ".section __OBJC, __cstring_object" } } */
-/* { dg-final { scan-assembler 
".long\t__NSConstantStringClassReference\n\t.long\t.*\n\t.long\t5\n\t.data" } } 
*/
+/* LLVM LOCAL accept llvm syntax */
+/* { dg-final { scan-assembler 
".long\t__NSConstantStringClassReference\n\t.long\t.*\n\t.long\t5\n" } } */

Modified: llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-11-64bit.m
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-11-64bit.m?rev=46270&r1=46269&r2=46270&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/testsuite/objc.dg/const-str-11-64bit.m (original)
+++ llvm-gcc-4.2/trunk/

[llvm-commits] [llvm-gcc-4.2] r46271 - in /llvm-gcc-4.2/trunk/gcc: config/i386/i386.c toplev.c

2008-01-22 Thread Evan Cheng
Author: evancheng
Date: Tue Jan 22 20:49:24 2008
New Revision: 46271

URL: http://llvm.org/viewvc/llvm-project?rev=46271&view=rev
Log:
Need to call init_regs() from backend_init() to ensure TYPE_MODE for 
user-defined vector types are set up correctly; remove the workaround from 
i386.c.

Modified:
llvm-gcc-4.2/trunk/gcc/config/i386/i386.c
llvm-gcc-4.2/trunk/gcc/toplev.c

Modified: llvm-gcc-4.2/trunk/gcc/config/i386/i386.c
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/i386/i386.c?rev=46271&r1=46270&r2=46271&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/config/i386/i386.c (original)
+++ llvm-gcc-4.2/trunk/gcc/config/i386/i386.c Tue Jan 22 20:49:24 2008
@@ -3270,16 +3270,9 @@
   int offset = tree_low_cst (BINFO_OFFSET (base_binfo), 0) * 8;
   tree type = BINFO_TYPE (base_binfo);
 
-/* LLVM local */
-#ifdef ENABLE_LLVM
-  num = classify_argument (type_natural_mode (type),
-   type, subclasses,
-   (offset + bit_offset) % 256);
-#else   
   num = classify_argument (TYPE_MODE (type),
type, subclasses,
(offset + bit_offset) % 256);
-#endif
   if (!num)
 return 0;
   for (i = 0; i < num; i++)
@@ -3315,18 +3308,10 @@
}
  else
{
-/* LLVM local */
-#ifdef ENABLE_LLVM
- num = classify_argument (type_natural_mode (TREE_TYPE 
(field)),
-  TREE_TYPE (field), subclasses,
-  (int_bit_position (field)
-   + bit_offset) % 256);
-#else
  num = classify_argument (TYPE_MODE (TREE_TYPE (field)),
   TREE_TYPE (field), subclasses,
   (int_bit_position (field)
+ bit_offset) % 256);
-#endif
  if (!num)
return 0;
  for (i = 0; i < num; i++)
@@ -3345,14 +3330,8 @@
  /* Arrays are handled as small records.  */
  {
int num;
-/* LLVM local */
-#ifdef ENABLE_LLVM
-   num = classify_argument (type_natural_mode (TREE_TYPE (type)),
-TREE_TYPE (type), subclasses, bit_offset);
-#else
num = classify_argument (TYPE_MODE (TREE_TYPE (type)),
 TREE_TYPE (type), subclasses, bit_offset);
-#endif
if (!num)
  return 0;
 
@@ -3384,16 +3363,9 @@
  if (TREE_TYPE (field) == error_mark_node)
continue;
 
-/* LLVM local */
-#ifdef ENABLE_LLVM
- num = classify_argument (type_natural_mode (TREE_TYPE 
(field)),
-  TREE_TYPE (field), subclasses,
-  bit_offset);
-#else
  num = classify_argument (TYPE_MODE (TREE_TYPE (field)),
   TREE_TYPE (field), subclasses,
   bit_offset);
-#endif
  if (!num)
return 0;
  for (i = 0; i < num; i++)

Modified: llvm-gcc-4.2/trunk/gcc/toplev.c
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/toplev.c?rev=46271&r1=46270&r2=46271&view=diff

==
--- llvm-gcc-4.2/trunk/gcc/toplev.c (original)
+++ llvm-gcc-4.2/trunk/gcc/toplev.c Tue Jan 22 20:49:24 2008
@@ -2052,6 +2052,9 @@
 
   /* LLVM LOCAL begin */
 #ifdef ENABLE_LLVM
+  /* note: stor-layout.c:layout_type() uses have_regs_of_mode[] to initialize
+ TYPE_MODE field for user specified vector types. */
+  init_regs ();
   /* note: we need init_emit_once above to initialize ptr_mode and friends. */
   llvm_initialize_backend();
   return;


___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [llvm] r46272 - /llvm/branches/release_22/lib/Target/Mips/MipsRegisterInfo.cpp

2008-01-22 Thread Tanya Lattner
Author: tbrethou
Date: Tue Jan 22 21:56:34 2008
New Revision: 46272

URL: http://llvm.org/viewvc/llvm-project?rev=46272&view=rev
Log:
Merge from mainline.
Trivial patch to fix two warnings

Modified:
llvm/branches/release_22/lib/Target/Mips/MipsRegisterInfo.cpp

Modified: llvm/branches/release_22/lib/Target/Mips/MipsRegisterInfo.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_22/lib/Target/Mips/MipsRegisterInfo.cpp?rev=46272&r1=46271&r2=46272&view=diff

==
--- llvm/branches/release_22/lib/Target/Mips/MipsRegisterInfo.cpp (original)
+++ llvm/branches/release_22/lib/Target/Mips/MipsRegisterInfo.cpp Tue Jan 22 
21:56:34 2008
@@ -292,6 +292,9 @@
 FPOffset = NumBytes;
 RAOffset = 0;
 NumBytes += 4;
+  } else {
+// No calls and no fp.
+RAOffset = FPOffset = 0;
   }
 
   MFI->setObjectOffset(MFI->CreateStackObject(4,4), FPOffset);


___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


Re: [llvm-commits] [llvm] r46220 - /llvm/trunk/test/CFrontend/2008-01-21-PackedStructField.c

2008-01-22 Thread Chris Lattner

On Jan 22, 2008, at 3:02 PM, Tanya Lattner wrote:

> This fails with llvm-gcc-4.0, darwin 8, x86.
>
> ../../src/gcc/llvm-types.cpp:82: failed assertion `(!TYPE_SIZE(Tr)
> || !Ty->isSized() || !isInt64(TYPE_SIZE(Tr), true) || getInt64
> (TYPE_SIZE(Tr), true) == getTargetData().getABITypeSizeInBits(Ty)) &&
> "LLVM type size doesn't match GCC type size!"'
>
> 2008-01-21-PackedBitFields.c is also failing for me.

Does it work with 4.2?  If llvm 2.2 will be the last release that  
includes llvm-gcc 4.0, I don't think this is a problem.

-chris

>
>
> -Tanya
>
> On Jan 21, 2008, at 2:15 PM, Devang Patel wrote:
>
>> Author: dpatel
>> Date: Mon Jan 21 16:15:58 2008
>> New Revision: 46220
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=46220&view=rev
>> Log:
>> New test.
>>
>> Added:
>>llvm/trunk/test/CFrontend/2008-01-21-PackedStructField.c
>>
>> Added: llvm/trunk/test/CFrontend/2008-01-21-PackedStructField.c
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CFrontend/
>> 2008-01-21-PackedStructField.c?rev=46220&view=auto
>>
>> = 
>> =
>> 
>> --- llvm/trunk/test/CFrontend/2008-01-21-PackedStructField.c (added)
>> +++ llvm/trunk/test/CFrontend/2008-01-21-PackedStructField.c Mon
>> Jan 21 16:15:58 2008
>> @@ -0,0 +1,5 @@
>> +// RUN: %llvmgcc %s -S -o -
>> +
>> +struct X { long double b; unsigned char c; double __attribute__
>> ((packed)) d; };
>> +struct X x = { 3.0L, 5, 3.0 };
>> +
>>
>>
>> ___
>> llvm-commits mailing list
>> llvm-commits@cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> ___
> llvm-commits mailing list
> llvm-commits@cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


Re: [llvm-commits] [llvm] r46187 - in /llvm/trunk: include/llvm/ADT/FoldingSet.h lib/Support/FoldingSet.cpp

2008-01-22 Thread Chris Lattner

On Jan 18, 2008, at 8:22 PM, Ted Kremenek wrote:

> Author: kremenek
> Date: Fri Jan 18 22:22:50 2008
> New Revision: 46187
>
> URL: http://llvm.org/viewvc/llvm-project?rev=46187&view=rev
> Log:
> Made 'FoldingSetNodeID' a proper class instead of a nested class in
> 'FoldingSetNodeImpl' (previously 'FoldingSetNodeID' was a typedef of
> 'FoldingSetNodeImpl::NodeID').
>
> Why?  Clients can now easily forward declare 'FoldingSetNodeID'  
> without having
> to include FoldingSet.h.

Whoa, craziness!  Thanks Ted,

-Chris
___
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] r46164 - in /llvm-gcc-4.2/trunk/gcc/config/i386: llvm-i386-target.h llvm-i386.cpp

2008-01-22 Thread Chris Lattner

On Jan 19, 2008, at 12:47 AM, Duncan Sands wrote:

>> i32 / i64 all integer structs are not passed byval.
>
> What about integer arrays?

This is an optimization, not a correctness issue.  Can you give an  
example that you mean?

-Chris
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [llvm-gcc-4.2] r46273 - in /llvm-gcc-4.2/branches/release_22: configure configure.in

2008-01-22 Thread Tanya Lattner
Author: tbrethou
Date: Tue Jan 22 23:47:49 2008
New Revision: 46273

URL: http://llvm.org/viewvc/llvm-project?rev=46273&view=rev
Log:
Disable bootstrap.

Modified:
llvm-gcc-4.2/branches/release_22/configure
llvm-gcc-4.2/branches/release_22/configure.in

Modified: llvm-gcc-4.2/branches/release_22/configure
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/branches/release_22/configure?rev=46273&r1=46272&r2=46273&view=diff

==
--- llvm-gcc-4.2/branches/release_22/configure (original)
+++ llvm-gcc-4.2/branches/release_22/configure Tue Jan 22 23:47:49 2008
@@ -45,7 +45,7 @@
   --with-build-sysroot=sysroot
   use sysroot as the system root during the build"
 ac_help="$ac_help
-  --enable-bootstrap   Enable bootstrapping [yes if native build]"
+  --enable-bootstrap   Enable bootstrapping [no]"
 ac_help="$ac_help
   --enable-serial-[{host,target,build}-]configure
   Force sequential configuration of
@@ -3172,7 +3172,7 @@
   # Default behavior.  Enable bootstrap if we have a compiler
   # and we are in a native configuration.
   yes:$build:$build:default)
-enable_bootstrap=yes ;;
+enable_bootstrap=no ;;
 
   *:*:*:default)
 enable_bootstrap=no ;;

Modified: llvm-gcc-4.2/branches/release_22/configure.in
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/branches/release_22/configure.in?rev=46273&r1=46272&r2=46273&view=diff

==
--- llvm-gcc-4.2/branches/release_22/configure.in (original)
+++ llvm-gcc-4.2/branches/release_22/configure.in Tue Jan 22 23:47:49 2008
@@ -1865,7 +1865,7 @@
 # not to nest @if/@endif pairs, because configure will not warn you at all.
 
 AC_ARG_ENABLE([bootstrap],
-[  --enable-bootstrap   Enable bootstrapping [yes if native build]],,
+[  --enable-bootstrap   Enable bootstrapping [no]],,
 enable_bootstrap=default)
 
 # Issue errors and warnings for invalid/strange bootstrap combinations.
@@ -1880,7 +1880,7 @@
   # Default behavior.  Enable bootstrap if we have a compiler
   # and we are in a native configuration.
   yes:$build:$build:default)
-enable_bootstrap=yes ;;
+enable_bootstrap=no ;;
 
   *:*:*:default)
 enable_bootstrap=no ;;


___
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] r46164 - in /l lvm-gcc-4.2/trunk/gcc/config/i386: llvm-i386-ta rget.h llvm-i386.cpp

2008-01-22 Thread Duncan Sands
> > What about integer arrays?
> 
> This is an optimization, not a correctness issue.  Can you give an  
> example that you mean?

According to the x86-64 ABI, arrays of integers that are not more
than 8 bytes long are passed in integer registers.  Likewise for
structs.  So it looks like a correctness issue as well as an optimization :)

CIao,

Duncan.
___
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] r46164 - in /llvm-gcc-4.2/trunk/gcc/config/i386: llvm-i386-target.h llvm-i386.cpp

2008-01-22 Thread Chris Lattner

On Jan 22, 2008, at 10:03 PM, Duncan Sands wrote:

>>> What about integer arrays?
>>
>> This is an optimization, not a correctness issue.  Can you give an
>> example that you mean?
>
> According to the x86-64 ABI, arrays of integers that are not more
> than 8 bytes long are passed in integer registers.  Likewise for
> structs.  So it looks like a correctness issue as well as an  
> optimization :)

Okay, well we already get many other x86-64 issues wrong already, but  
Evan is chipping away at it.  How do you pass an array by value in C?  
Example please,

-Chris
___
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] r46164 - in /l lvm-gcc-4.2/trunk/gcc/config/i386: llvm-i386-ta rget.h llvm-i386.cpp

2008-01-22 Thread Duncan Sands
> Okay, well we already get many other x86-64 issues wrong already, but  
> Evan is chipping away at it.  How do you pass an array by value in C?  
> Example please,

I find the x86-64 ABI hard to interpret, but it seems to say that
aggregates are classified recursively, so it looks like a struct
containing a small integer array should be passed in integer registers.

Also, it is easy in Ada: the compiler passes small arrays by value,
for example:

package Arr is
   type ByValArray is array (1 .. 2) of Short_Integer;
   function PassArrayByVal (A : ByValArray) return Short_Integer;
end;

package body Arr is
   function PassArrayByVal (A : ByValArray) return Short_Integer is
   begin
  return A(1) + A(2);
   end;
end;

->

define i16 @arr__passarraybyval(i32 %a.0.0) signext nounwind  {

(Here presumably the i32 was synthesized by llvm-convert from the
two element array of shorts passed by value).

Can you please clarify the roles of llvm-gcc and the code generators
in getting ABI compatibility.  When generating IR for x86-64, llvm-gcc
sometimes chops by-value structs into pieces, and sometimes passes the
struct as a byval parameter.  Since it chops up all-integer structs,
and this corresponds more or less to what the ABI says, I assumed this
was an attempt to get ABI correctness.  Especially as the code generators
don't seem to bother themselves with following the details of the ABI (yet),
and just push byval parameters onto the stack.  Since you say

>> This is an optimization, not a correctness issue

I guess this means that the plan is to teach the codegenerators how to
pass any aggregate byval in an ABI conformant way (not the case right now),
but still do some chopping up in the front-end to help the optimizers.
Of course this chopping up needs to be done carefully so the final result
squirted out by the codegenerators (once they are ABI conformant) is the
same as if the chopping had not been done...  Is this chopping really a
big win?  Is it not possible to get an equivalent level of optimization
by enhancing alias analysis?

Ciao,

Duncan.
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits