logical error with 16bit arithmatic operations

2009-03-27 Thread daniel tian
Hello,
  I am porting gcc to a 32bit RISC chip, and  I met a logical
error with 16bit arithmetic operations in generating assemble code.
the error is between two 16bit data movement(unsigned short).
While like A = B,  A, and B are all unsigned short type.  B is a
result of a series of computation, which may have value in high 16bit.
Because A , B are both HImode, so the move insn doesn't take zero
extend operation, so A will have value in high 16bit which will caused
a wrong result in computation. Like the following CRC calculation.

 There is a comment added with "//" in logical error position.


Here is the .sched2 script:
;;   ==
;;   -- basic block 0 from 10 to 92 -- after reload
;;   ==

;;0--> 10   R3=R4  :nothing
;;1--> 11   R7=R5  :nothing
;;2--> 89   R0=`x25_crc_table' :nothing
;;3--> 92   pc=L58 :nothing
;;  Ready list (final):
;;   total time = 3
;;   new head = 10
;;   new tail = 92

;;   ==
;;   -- basic block 1 from 25 to 53 -- after reload
;;   ==

;;0--> 25   R6=[post_modify]   :rice_load,nothing
;;1--> 57   R7=R7-0x1  :nothing
;;2--> 26   R4=R6 0>>0x4   :nothing
;;3--> 27   R4=zxn(R4) :nothing
;;4--> 28   R4=R5^R4   :nothing
;;5--> 32   R4=zxn(R4) :nothing
;;6--> 35   R4=R4+R4   :nothing
;;7--> 37   R5=[R4+R0] :rice_load,nothing
;;8--> 42   R6=zxn(R6) :nothing
;;9--> 38   R5=R5^R13  :nothing
;;   10--> 40   R4=R5 0>>0xc   :nothing
;;   11--> 43   R4=R4^R6   :nothing
;;   12--> 47   R4=zxn(R4) :nothing
;;   13--> 48   R4=R4&0xf  :nothing
;;   14--> 50   R4=R4+R4   :nothing
;;   15--> 52   R4=[R4+R0] :rice_load,nothing
;;   16--> 46   R5=R5<<0x4 :nothing
;;   17--> 53   R6=R5^R4   :nothing
;;  Ready list (final):
;;   total time = 17
;;   new head = 25
;;   new tail = 53

;;   ==
;;   -- basic block 2 from 23 to 62 -- after reload
;;   ==

;;0--> 87   R2=zxn(R6) :nothing


;;1--> 23   R5=R6 0>>0xc   :nothing
 //R5 and R6 are both unsigned short type. But R6 will
have it's value in high 16bit because of series of logical operations
(AND, OR, XOR and so on). Doing it like this way will cause R5 also
being valued in high 16bit. This will cause a wrong value. The correct
one is : R5 = R2 0 >> 0xC. because R2 did zero extend in former insn
from R6. But How I let gcc know it.


;;2--> 31   R13=R2<<0x4:nothing
;;3--> 62   pc={(R7>0x0)?L20:pc}   :nothing
;;  Ready list (final):
;;   total time = 3
;;   new head = 87
;;   new tail = 62

;;   ==
;;   -- basic block 3 from 100 to 100 -- after reload
;;   ==

;;0--> 100  return :nothing
;;  Ready list (final):
;;   total time = 0
;;   new head = 100
;;   new tail = 100



PS, I compile the c code with -Os command. Here is C code:

static  const unsigned short  x25_crc_table[16] =
{
  0x, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
  0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF
};

/*
** FUNCTION:crc_X25
**
** DESCRIPTION: This function generates a crc on from the data given
**  using the X 25 CRC lookup table.
**
**
** PARAMETERS:  Data to check:
**  Array of data:  UTINY *
**  Length of data in array:LONG
**  CRC initial value:  USHORT
**
** RETURNS: USHORT, The CRC calculated.
**
*/
unsigned short crc_X25(unsigned char *data, long length, unsigned short crc_reg)
{
  unsigned short temp;


  /* Use 4 bits out of the data/polynomial at a time */
  while (length > 0)
  {   /* step through the data */
temp = crc_reg;

temp >>= 12u;
temp ^= (*data) >> 4u;  /* xor data (MS 4 bits) with the MS 4 bits */
temp &= 0xf;/* of the CRC reg to be used as index in array */
temp = crc_reg = (unsigned short )((crc_reg << 4u) ^ x25_crc_table[temp]);

/* Now do sec

Re: New no-undefined-overflow branch

2009-03-27 Thread Eus
Hi Ho!

On Fri, 2009-03-06 at 15:29 +0100, Paolo Bonzini wrote:
> > So while trapping variants can certainly be introduced it looks like
> > this task may be more difficult.
> 
> I don't think you need to introduce trapping tree codes.  You can
> introduce them directly in the front-end as
> 
>s = x +nv y
>(((s ^ x) & (s ^ y)) < 0) ? trap () : s

Could you please kindly explain a bit about it?

Suppose s, x, and y are 8-bit signed integer.
If x and y are -128, s = (-128) + (-128), which will overflow.
Now if suppose s is 0, ((0 ^ -128) & (0 ^ -128)) == -128, which is less
than zero and will trap. This is correct.
But, if s is -128, ((-128 ^ -128) & (-128 ^ -128)) is zero and will not
trap. This is incorrect, isn't this?

In short, why should s be included in the calculation?
Is it assumed that s is always zero?

Thank you very much for the explanation.

>d = x -nv y
>(((d ^ x) & (x ^ y)) < 0) ? trap () : d
> 
>(b == INT_MIN ? trap () : -nv b)
> 
>(int)((long long) a * (long long) b) == a *nv b ? trap () : a *nv b
> 
> Making sure they are compiled efficiently is another story, but
> especially for the sake of LTO I think this is the way to go.
> 
> Paolo

-- 
Best regards,
Eus (FSF member #4445)

In this digital era, where computing technology is pervasive, your
freedom depends on the software controlling those computing devices.

Join free software movement today! It is free as in freedom, not as in
free beer!

Join: http://www.fsf.org/jf?referrer=4445



GCC EH unwinding bug and libjava calling std::terminate ()

2009-03-27 Thread Jan Hubicka
Hi,
current mainline is buggy in EH unwinding effectivly ignoring
MUST_NOT_THROW regions when reached via RESX from local handlers.
See http://gcc.gnu.org/ml/gcc-patches/2009-03/msg01285.html for details.

Unfortunately this patch causes bootstrap failure when building libjava,
because std::terminate() is now called.  The call comes from
run_proxy in natVMProxy.cc where we have cleanup code calling
destructor of:

_Jv_InterpFrame frame_desc (self->self, thread, proxyClass,
  NULL, frame_proxy);

Now the desctuctor is pretty simple but because of:
'if a destructor called during stack unwinding exits with an exception,
std::terminate is called'

and because we use -fnon-call-excpetion and destructor is accessing
memory, we keep MUST_NOT_THROW terminate () call accessible
because after inlining the destructor, cleanup might unwind up
to that MUST_NOT_THROW.

Questio is how to fix this situation? Shall we link with C++ runtime,
or use -fno-non-call-exceptions to build this file or somehow restruture
code to avoid this case?

Honza


Re: New no-undefined-overflow branch

2009-03-27 Thread Paolo Bonzini
Eus wrote:
> Hi Ho!
> 
> On Fri, 2009-03-06 at 15:29 +0100, Paolo Bonzini wrote:
>>> So while trapping variants can certainly be introduced it looks like
>>> this task may be more difficult.
>> I don't think you need to introduce trapping tree codes.  You can
>> introduce them directly in the front-end as
>>
>>s = x +nv y
>>(((s ^ x) & (s ^ y)) < 0) ? trap () : s
> 
> Could you please kindly explain a bit about it?
> 
> Suppose s, x, and y are 8-bit signed integer.
> If x and y are -128, s = (-128) + (-128), which will overflow.
> Now if suppose s is 0, ((0 ^ -128) & (0 ^ -128)) == -128, which is less
> than zero and will trap. This is correct.
> But, if s is -128, ((-128 ^ -128) & (-128 ^ -128)) is zero and will not
> trap. This is incorrect, isn't this?

Don't look at it as an arithmetic test, "< 0" is just a shortcut for
"the most significant bit of the first operand is 1".  So the formula's
outcome only depends on the ANDs and XORs of the sign bits; it means,
"trap if the result's sign is different from both addends' signs" or
equivalently "check that the result's sign matches at least one addend's
sign".

You can also say "((s ^ x) & ~(x ^ y)) < 0", or equivalently "((s ^ y) &
~(x ^ y)) < 0".  These mean "trap if the two addends have the same sign
and the sum has a different sign".  It is easy to prove that they are
equivalent:

  sxy s^xs^y ~(x^y)  equal?
  000  0  0 1  yes (0)
  001  0  1 0  yes (0)
  010  1  0 0  yes (0)
  011  1  1 1  yes (1)
  100  1  1 1  yes (1)
  101  1  0 0  yes (0)
  110  0  1 0  yes (0)
  111  0  0 1  yes (0)

Paolo



Re: GCC EH unwinding bug and libjava calling std::terminate ()

2009-03-27 Thread Andrew Haley
Jan Hubicka wrote:

> current mainline is buggy in EH unwinding effectivly ignoring
> MUST_NOT_THROW regions when reached via RESX from local handlers.
> See http://gcc.gnu.org/ml/gcc-patches/2009-03/msg01285.html for details.
> 
> Unfortunately this patch causes bootstrap failure when building libjava,
> because std::terminate() is now called.  The call comes from
> run_proxy in natVMProxy.cc where we have cleanup code calling
> destructor of:
> 
> _Jv_InterpFrame frame_desc (self->self, thread, proxyClass,
>   NULL, frame_proxy);
> 
> Now the desctuctor is pretty simple but because of:
> 'if a destructor called during stack unwinding exits with an exception,
> std::terminate is called'
> 
> and because we use -fnon-call-excpetion and destructor is accessing
> memory, we keep MUST_NOT_THROW terminate () call accessible
> because after inlining the destructor, cleanup might unwind up
> to that MUST_NOT_THROW.
> 
> Questio is how to fix this situation? Shall we link with C++ runtime,

Please don't.

> or use -fno-non-call-exceptions

No, because it might segfault, and we need to catch it.

> to build this file or somehow restruture
> code to avoid this case?

/* Gimplify a MUST_NOT_THROW_EXPR.  */

static enum gimplify_status
gimplify_must_not_throw_expr (tree *expr_p, gimple_seq *pre_p)
{
  tree stmt = *expr_p;
  tree temp = voidify_wrapper_expr (stmt, NULL);
  tree body = TREE_OPERAND (stmt, 0);
  tree termination;

  if (pragma_java_exceptions)
termination = terminate_node;
  else
termination = abort_node;

  stmt = build_gimple_eh_filter_tree (body, NULL_TREE,
  build_call_n (termination, 0));



Andrew.


Re: logical error with 16bit arithmatic operations

2009-03-27 Thread Ian Lance Taylor
daniel tian  writes:

>   I am porting gcc to a 32bit RISC chip, and  I met a logical
> error with 16bit arithmetic operations in generating assemble code.
> the error is between two 16bit data movement(unsigned short).
> While like A = B,  A, and B are all unsigned short type.  B is a
> result of a series of computation, which may have value in high 16bit.
> Because A , B are both HImode, so the move insn doesn't take zero
> extend operation, so A will have value in high 16bit which will caused
> a wrong result in computation.

The relevant types in your code are "unsigned short".  I assume that on
your processor that is a 16 bit type.  An variable of an unsigned 16 bit
type can hold values from 0 to 0x, inclusive.  There is nothing
wrong with having the high bit be set in such a variable.  It just means
that the value is between 0x8000 and 0x.


> ;;  1--> 23   R5=R6 0>>0xc   :nothing
>  //R5 and R6 are both unsigned short type. But R6 will
> have it's value in high 16bit because of series of logical operations
> (AND, OR, XOR and so on). Doing it like this way will cause R5 also
> being valued in high 16bit. This will cause a wrong value. The correct
> one is : R5 = R2 0 >> 0xC. because R2 did zero extend in former insn
>>From R6. But How I let gcc know it.

No.  0>> means a logical right shift, not an arithmetic right shift
(LSHIFTRT rathre than ASHIFTRT).  When doing a logical right shift, the
sign bit is moved right also; it is not sticky.  This instruction is
fine.  Perhaps there is a problem in your implementation of LSHIFTRT.

Ian


Getting variable attribute from rtx

2009-03-27 Thread Dobes

I need to add support for some custom attributes that I need to know during
operand matching.  I have no problem adding the attributes, but I don't know
what to do so that I can access the information later.  My function that is
called to handle the attribute looks like this:

static tree
attr_myattr_handler(tree *node, tree name, tree args, int flags, 
 bool *no_add_attrs) {
  /* What should I do here */
}

In the source code:

int __attribute__((__myattr__)) a;

When 'a' is being matched as an operand to, say, 'addsi3', I would like to
be able to check the rtx to see if that attribute was set with a function
like this:

int
myattr_operand (op, mode)
 rtx op;
 enum machine_mode mode;
{
  /* What do I need here */
}

Thanks for the help.  Sorry, if this is simple, I'm a bit of a noob in this
area.
-- 
View this message in context: 
http://www.nabble.com/Getting-variable-attribute-from-rtx-tp22745207p22745207.html
Sent from the gcc - Dev mailing list archive at Nabble.com.



Re: GCC EH unwinding bug and libjava calling std::terminate ()

2009-03-27 Thread Jan Hubicka
> Jan Hubicka wrote:
> 
> > current mainline is buggy in EH unwinding effectivly ignoring
> > MUST_NOT_THROW regions when reached via RESX from local handlers.
> > See http://gcc.gnu.org/ml/gcc-patches/2009-03/msg01285.html for details.
> > 
> > Unfortunately this patch causes bootstrap failure when building libjava,
> > because std::terminate() is now called.  The call comes from
> > run_proxy in natVMProxy.cc where we have cleanup code calling
> > destructor of:
> > 
> > _Jv_InterpFrame frame_desc (self->self, thread, proxyClass,
> >   NULL, frame_proxy);
> > 
> > Now the desctuctor is pretty simple but because of:
> > 'if a destructor called during stack unwinding exits with an exception,
> > std::terminate is called'
> > 
> > and because we use -fnon-call-excpetion and destructor is accessing
> > memory, we keep MUST_NOT_THROW terminate () call accessible
> > because after inlining the destructor, cleanup might unwind up
> > to that MUST_NOT_THROW.
> > 
> > Questio is how to fix this situation? Shall we link with C++ runtime,
> 
> Please don't.
> 
> > or use -fno-non-call-exceptions
> 
> No, because it might segfault, and we need to catch it.
> 
> > to build this file or somehow restruture
> > code to avoid this case?
> 
> /* Gimplify a MUST_NOT_THROW_EXPR.  */
> 
> static enum gimplify_status
> gimplify_must_not_throw_expr (tree *expr_p, gimple_seq *pre_p)
> {
>   tree stmt = *expr_p;
>   tree temp = voidify_wrapper_expr (stmt, NULL);
>   tree body = TREE_OPERAND (stmt, 0);
>   tree termination;
> 
>   if (pragma_java_exceptions)
> termination = terminate_node;
>   else
> termination = abort_node;

OK, pragma_java_exceptions variable is not there, does something like
this work for you?

I would like to commit this to mainline so the MUST_NOT_THROW fix can go
as well.  I am commiting it to pretty-ipa in meantime.

Honza

Index: cp/except.c
===
*** cp/except.c (revision 145101)
--- cp/except.c (working copy)
*** choose_personality_routine (enum languag
*** 353,358 
--- 353,359 
  
  case lang_java:
state = chose_java;
+   terminate_node = built_in_decls [BUILT_IN_ABORT];
eh_personality_libfunc = init_one_libfunc (USING_SJLJ_EXCEPTIONS
 ? "__gcj_personality_sj0"
 : "__gcj_personality_v0");


Re: GCC EH unwinding bug and libjava calling std::terminate ()

2009-03-27 Thread Andrew Haley
Jan Hubicka wrote:

> OK, pragma_java_exceptions variable is not there

It's in mainline now.

> does something like this work for you?

Yes.

Andrew.


Re: GCC EH unwinding bug and libjava calling std::terminate ()

2009-03-27 Thread Jan Hubicka
> Jan Hubicka wrote:
> 
> > OK, pragma_java_exceptions variable is not there
> 
> It's in mainline now.
> 
> > does something like this work for you?
> 
> Yes.

OK, I will do full testing cycle (x86_64-linux) and commit it.
Thanks!
Honza
> 
> Andrew.


Re: Minimum GMP/MPFR version bumps for GCC-4.5

2009-03-27 Thread Kaveh Ghazi

From: "Joe Buck" 


Debian stable, and Ubuntu Hardy (most recent LTS release) have 2.3.1.
Same with OpenSUSE 11.0.  So I think 2.3.1 is typical of current stable
releases; Fedora tends to be bleeding edge and not typical.

I still have to deal with older distros (e.g. RHEL 4), but it's
already necessary to use newer gmp and gas versions, as well as a newer
mpfr version, in that case.


Thanks to all who responded.  Based on the various feedback, it seem like 
for most (all?) people their box arrives with a recent enough GMP/MPFR or 
they already have to get a sufficiently recent copy from source and build it 
in-tree.


So upgrading GCC's requirements to gmp-4.2 and mpfr-2.3.1 should be 
minimally disruptive.  I'll prepare a patch for 4.5.


   Regards,
   --Kaveh



Re: Getting variable attribute from rtx

2009-03-27 Thread Eric Botcazou
> I need to add support for some custom attributes that I need to know during
> operand matching.  I have no problem adding the attributes, but I don't
> know what to do so that I can access the information later.  My function
> that is called to handle the attribute looks like this:
>
> static tree
> attr_myattr_handler(tree *node, tree name, tree args, int flags,
>  bool *no_add_attrs) {
>   /* What should I do here */
> }

See the SYMBOL_REF_FLAGS stuff in rtl.h and various examples in the back-ends.

-- 
Eric Botcazou


Re: GCC 4.4.0 Status Report (2009-03-13)

2009-03-27 Thread Toon Moene

Ian Lance Taylor wrote:


By the way, from reading this messages I think that people have a
slightly rosier recollection of the egcs split than I do.  I think the
egcs split was the right thing to do, but it was also a power play on
the part of Cygnus because we could not continue operating under the
existing gcc maintainership regime, and we could not get the FSF to
change it.  We signed up most of the non-Cygnus contributors because we
needed political cover; we were able to sign them up because they were
facing the same problems that we were.


Certainly, and I, as one of the non-Cygnus maintainers (of g77) 
definitely understood it that way.


That was why I was so nervous about it - if the split went off the deep 
end, it could have hurt gcc/g++/g77 development for years ...


--
Toon Moene - e-mail: t...@moene.org (*NEW*) - phone: +31 346 214290
Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands
At home: http://moene.org/~toon/
Progress of GNU Fortran: http://gcc.gnu.org/gcc-4.4/changes.html


Re: Getting variable attribute from rtx

2009-03-27 Thread Ian Lance Taylor
Eric Botcazou  writes:

>> I need to add support for some custom attributes that I need to know during
>> operand matching.  I have no problem adding the attributes, but I don't
>> know what to do so that I can access the information later.  My function
>> that is called to handle the attribute looks like this:
>>
>> static tree
>> attr_myattr_handler(tree *node, tree name, tree args, int flags,
>>  bool *no_add_attrs) {
>>   /* What should I do here */
>> }
>
> See the SYMBOL_REF_FLAGS stuff in rtl.h and various examples in the back-ends.

Or, better, look for uses of lookup_attribute.

Ian


Re: cmath call builtin sqrtf but many platforms seem miss that(was Re: lrint lrintf problems )

2009-03-27 Thread Gunther Nikl

Bernd Roesch schrieb:

without changed headers old ompiler and libs do not work, because for C
there is no
sqrtf and other C99 funcs and many C++ programs get also many errors.


Ok, you are trying to add C99 functions to your libc. Apparently you
made a mistake if you get linker errors.


i see old libstdc++ contain sqrtf but get many other linker errors.


What is an "old libstdc++"? AFAICT there was/is no sqrtf function in
libstdc++. In the sqrt case there are inline wrapper functions with
either a float or a double arg. These inlines use an appropriate sqrt
builtin. Since these builtins do not exist for your target the compiler
generates a call to the real function without the __builtin prefix.


there is also a sqrtf not undef in cmath as many other functions are.
When i define sqrtf in math.h then the sqrtf func in libstdc++ is maybe not
add and this strange linker error come.but wy it work not correct when i
add sqrtf to libc i dont know.only solution below work.


libstdc++ _requires_ real functions to be present in your libc. If you
get linker errors then the linker cannot locate functions. There really
is no need to play #define games on __builtin names to get it work.

Gunther


Re: Minimum GMP/MPFR version bumps for GCC-4.5

2009-03-27 Thread Toon Moene

Steven Bosscher wrote:


On Thu, Mar 26, 2009 at 10:39 PM, Kaveh R. Ghazi  wrote:

If there are no objections, I'll create a patch.


P... for those of us who just install the latest-and-greatest
fedora/suse/ubuntu/... once and don't change installations for two or
three years (stable machine, etc.) it becomes increasingly harder to
install all required libraries to build GCC...


But why do you want to work this way (assuming that people who need a 
stable OS don't want to upgrade their compiler on a whim).


We're in the process of developing the next GCC.  Therefore, my modus 
operandi is to "apt-get update && apt-get dist-upgrade" my Debian 
testing OS every Sunday morning.


--
Toon Moene - e-mail: t...@moene.org (*NEW*) - phone: +31 346 214290
Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands
At home: http://moene.org/~toon/
Progress of GNU Fortran: http://gcc.gnu.org/gcc-4.4/changes.html


Re: Minimum GMP/MPFR version bumps for GCC-4.5

2009-03-27 Thread Steven Bosscher
On Fri, Mar 27, 2009 at 8:40 PM, Toon Moene  wrote:
> Steven Bosscher wrote:
>
>> On Thu, Mar 26, 2009 at 10:39 PM, Kaveh R. Ghazi 
>> wrote:
>>>
>>> If there are no objections, I'll create a patch.
>>
>> P... for those of us who just install the latest-and-greatest
>> fedora/suse/ubuntu/... once and don't change installations for two or
>> three years (stable machine, etc.) it becomes increasingly harder to
>> install all required libraries to build GCC...
>
> But why do you want to work this way (assuming that people who need a stable
> OS don't want to upgrade their compiler on a whim).

The problem doesn't happen on machines I own or have root access to.
It's only a problem when you try to do gcc development on machines
hosted by 3rd parties (SF compile farm, HP cluster, machines at places
where I work and/or where I try to convince people to use gfortran
instead of e.g. sunf90, etc.).

Ciao!
Steven


Re: Minimum GMP/MPFR version bumps for GCC-4.5

2009-03-27 Thread Toon Moene

Steven Bosscher wrote:


The problem doesn't happen on machines I own or have root access to.
It's only a problem when you try to do gcc development on machines
hosted by 3rd parties (SF compile farm, HP cluster, machines at places
where I work and/or where I try to convince people to use gfortran
instead of e.g. sunf90, etc.).


I fully agree.  Therefore, I practice, and advice anyone to apply RRTC 
(reverse reverse telecommuting):


"When arriving at your work place, log in to your home system using ssh 
-X and continue from there."


Works for me.

--
Toon Moene - e-mail: t...@moene.org (*NEW*) - phone: +31 346 214290
Saturnushof 14, 3738 XG  Maartensdijk, The Netherlands
At home: http://moene.org/~toon/
Progress of GNU Fortran: http://gcc.gnu.org/gcc-4.4/changes.html


GCC 4.4 Branch Created

2009-03-27 Thread Mark Mitchell
[Joseph, Danny, see below for request.]

At long last, I have created the GCC 4.4 release branch.

We are now in Stage 1 on the mainline.  Please go ahead and begin
checking in approved patches.  Please try to coordinate so that we do
not have multiple overlapping radical changes.  Please announce your
intent to commit a major in advance of doing so, and avoid committing
two major changes within a day of each other.

I apologize to all for how long this took.  I understand full well --
and share -- the frustration expressed with the FSF and the SC.  If
there's a positive from this, it is that it has stimulated useful
discussion about the roles of the SC and the FSF and the broader
development community.  Speaking only for myself, I believe that the SC
needs to take a more assertive role in the future, and I will encourage
that assertiveness.

However, part of the delay has been due to the FSF considering the
comments made by various people about the new runtime exception.  The
FSF listed to those objections and carefully considered them.  That does
take time.  The FSF hopes to have a new version of this shortly.

Several steps from the branch checklist remain.  Joseph, Danny, would
you be able to take care of these?  As I will be out much of next week,
and have some interfering personal obligations at present, I would
appreciate your help.  Joseph, if I have failed to do something
correctly, please also feel free to correct that.

The tasks that remain from branching.html are:

7. Generating a snapshot manually with gcc_release -p.

8. Regenerating .pot files.

12. Updating the email parsing script.  AFAICT, this hasn't been done in
a while, so I wasn't sure if it was considered obsolete.

13. Asking Danny Berlin to adjust PRs.

I've attached the mechanical patch set made to the web site.

Thanks,

-- 
Mark Mitchell
CodeSourcery
m...@codesourcery.com
(650) 331-3385 x713
Index: htdocs/buildstat.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/buildstat.html,v
retrieving revision 1.17
diff -c -5 -p -r1.17 buildstat.html
*** htdocs/buildstat.html   2 Nov 2008 19:25:54 -   1.17
--- htdocs/buildstat.html   27 Mar 2009 20:54:58 -
***
*** 8,17 
--- 8,18 
  Build status for GCC
  
  These pages summarize build reports for GCC.
  
  
+ GCC 4.4.x
  GCC 4.3.x
  GCC 4.2.x
  GCC 4.1.x
  GCC 4.0.x
  GCC 3.4.x
Index: htdocs/index.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/index.html,v
retrieving revision 1.692
diff -c -5 -p -r1.692 index.html
*** htdocs/index.html   14 Mar 2009 12:15:03 -  1.692
--- htdocs/index.html   27 Mar 2009 20:54:58 -
*** Ulrich Drepper of Red Hat, Inc.
*** 95,145 
  Status
  
  
  
  Current release series:
!   GCC 4.3.3
  
Status:
http://gcc.gnu.org/ml/gcc/2009-01/msg00358.html";>2009-01-24
(regression fixes and docs only).

http://gcc.gnu.org/bugzilla/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=4.3&target_milestone=4.2.5&target_milestone=4.3.4&known_to_fail_type=allwordssubstr&known_to_work_type=allwordssubstr&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&gcchost_type=allwordssubstr&gcchost=&gcctarget_type=allwordssubstr&gcctarget=&gccbuild_type=allwordssubstr&gccbuild=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=SUSPENDED&bug_status=WAITING&bug_status=REOPENED&priority=P1&priority=P2&priority=P3&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=";>Serious
regressions.
http://gcc.gnu.org/bugzilla/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=4.3&target_milestone=4.2.5&target_milestone=4.3.4&known_to_fail_type=allwordssubstr&known_to_work_type=allwordssubstr&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&gcchost_type=allwordssubstr&gcchost=&gcctarget_type=allwordssubstr&gcctarget=&gccbuild_type=allwordssubstr&gccbuild=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=SUSPENDED&bug_status=WAITING&bug_status=REOPENED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=";>All
regressions.
  
  
  Previous release series:
!   GCC 4.2.4
  
Status:
!   http://gcc.gnu.org/ml/gcc/2008-05/msg00216.html";>2008-05-19
(regression fixes and docs only).

http://gcc.gnu.org/bugzilla/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=4.2&target_milestone=4.2.5&known_

Re: GCC 4.4 Branch Created

2009-03-27 Thread Joseph S. Myers
On Fri, 27 Mar 2009, Mark Mitchell wrote:

> 12. Updating the email parsing script.  AFAICT, this hasn't been done in
> a while, so I wasn't sure if it was considered obsolete.

I have done this.  I'll deal with the snapshot and .pot files later.  
I'll close 4.2 branch at some point after the PR summaries have been 
updated to mention 4.5 (to avoid conflicts between two sets of bulk 
Bugzilla changes), though probably not until next week.

If we want to deprecate gccbug in 4.4 and remove it in 4.5 (and so not 
need 4.5.1 or subsequent versions in this script), there is still time to 
do so (though not to get it in the first deprecated-features-removal patch 
for 4.5 - that has already been approved for 4.5 and I am retesting it 
tonight before committing it to trunk).

Index: bug_email.pl
===
RCS file: /cvs/gcc/wwwdocs/bugzilla/contrib/bug_email.pl,v
retrieving revision 1.49
diff -u -r1.49 bug_email.pl
--- bug_email.pl24 Jan 2009 10:28:08 -  1.49
+++ bug_email.pl27 Mar 2009 22:29:41 -
@@ -284,6 +284,9 @@
 {
$version = "unknown";
 }
+elsif ($release =~ /.*4\.5\.0.*/o) {
+   $version = "4.5.0";
+}
 elsif ($release =~ /.*4\.4\.0.*/o) {
$version = "4.4.0";
 }

-- 
Joseph S. Myers
jos...@codesourcery.com


gcc-4.4-20090327 is now available

2009-03-27 Thread gccadmin
Snapshot gcc-4.4-20090327 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.4-20090327/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.4 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch 
revision 145135

You'll find:

gcc-4.4-20090327.tar.bz2  Complete GCC (includes all of below)

gcc-core-4.4-20090327.tar.bz2 C front end and core compiler

gcc-ada-4.4-20090327.tar.bz2  Ada front end and runtime

gcc-fortran-4.4-20090327.tar.bz2  Fortran front end and runtime

gcc-g++-4.4-20090327.tar.bz2  C++ front end and runtime

gcc-java-4.4-20090327.tar.bz2 Java front end and runtime

gcc-objc-4.4-20090327.tar.bz2 Objective-C front end and runtime

gcc-testsuite-4.4-20090327.tar.bz2The GCC testsuite

Diffs from 4.4-20090320 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.4
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.


Re: GCC 4.4 Branch Created

2009-03-27 Thread Daniel Berlin
On Fri, Mar 27, 2009 at 6:34 PM, Joseph S. Myers
 wrote:
> On Fri, 27 Mar 2009, Mark Mitchell wrote:
>
>> 12. Updating the email parsing script.  AFAICT, this hasn't been done in
>> a while, so I wasn't sure if it was considered obsolete.
>
> I have done this.  I'll deal with the snapshot and .pot files later.
> I'll close 4.2 branch at some point after the PR summaries have been
> updated to mention 4.5 (to avoid conflicts between two sets of bulk
> Bugzilla changes), though probably not until next week.
>
> If we want to deprecate gccbug in 4.4 and remove it in 4.5 (and so not
> need 4.5.1 or subsequent versions in this script), there is still time to
> do so (though not to get it in the first deprecated-features-removal patch
> for 4.5 - that has already been approved for 4.5 and I am retesting it
> tonight before committing it to trunk).


I think we should.
We haven't received a bug through gccbug in quite a while :)


Re: GCC 4.4 Branch Created

2009-03-27 Thread Mark Mitchell
Daniel Berlin wrote:

>> If we want to deprecate gccbug in 4.4 and remove it in 4.5 (and so not
>> need 4.5.1 or subsequent versions in this script), there is still time to
>> do so (though not to get it in the first deprecated-features-removal patch
>> for 4.5 - that has already been approved for 4.5 and I am retesting it
>> tonight before committing it to trunk).

> I think we should.
> We haven't received a bug through gccbug in quite a while :)

Let's kill it, then.  Do we really need to deprecate this in 4.4?  If
nobody's using it, I think we can just remove it.  It's not part of GCC
proper.

-- 
Mark Mitchell
CodeSourcery
m...@codesourcery.com
(650) 331-3385 x713


gcc-4.5-20090327 is now available

2009-03-27 Thread gccadmin
Snapshot gcc-4.5-20090327 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.5-20090327/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.5 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/trunk revision 145140

You'll find:

gcc-4.5-20090327.tar.bz2  Complete GCC (includes all of below)

gcc-core-4.5-20090327.tar.bz2 C front end and core compiler

gcc-ada-4.5-20090327.tar.bz2  Ada front end and runtime

gcc-fortran-4.5-20090327.tar.bz2  Fortran front end and runtime

gcc-g++-4.5-20090327.tar.bz2  C++ front end and runtime

gcc-java-4.5-20090327.tar.bz2 Java front end and runtime

gcc-objc-4.5-20090327.tar.bz2 Objective-C front end and runtime

gcc-testsuite-4.5-20090327.tar.bz2The GCC testsuite

Diffs from 4.4-20090320 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.5
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.


Merging the alias-improvements branch

2009-03-27 Thread Richard Guenther

I plan to merge the alias-improvements branch next weekend (in 7 days)
if all goes well.  I will do bootstrap & regtesting on the archs
I have available (x86_64, i?86, ppc, ppc64, ia64, s390 and s390x).

During the next week I will try to extract all bugfixes from the branch
and apply them separately.  I will also post a merge diff upfront
(I hope it isn't too big), but diffing the branch against the last
trunk revision that it was merged is of course possible as well in
case you want to review it (it now only contains middle-end changes,
so technically I do not need approval, and thanks to Diego most
changes already got one review).

There is ongoing compile-time and runtime performance measurements
on x86_64 with acceptable results (faster compile-time, overall slight
improvements in SPEC numbers), I do not plan to add to that - volunteers
are welcome for other architectures, but as this is tree level changes
I do not expect architecture specific differences.

I will announce the time I am doing the last trunk -> alias-improvements
branch merge and freeze the trunk for that.

Thus, this is a heads-up - if I collide with your planned merge schedule
just tell me and we can sort it out.

Thanks,
Richard.


Re: Merging the alias-improvements branch

2009-03-27 Thread Diego Novillo
On Fri, Mar 27, 2009 at 19:38, Richard Guenther  wrote:

> I plan to merge the alias-improvements branch next weekend (in 7 days)

Looking forward to that!  Thanks for doing this.


Diego.