Fwd: Fusing two loops

2008-04-10 Thread Sandeep Maram
-- Forwarded message --
From: Sandeep Maram [EMAIL PROTECTED]
Date: Thu, Apr 10, 2008 at 11:57 AM
Subject: Re: Fusing two loops
To: Zdenek Dvorak [EMAIL PROTECTED]


Hi Zdenek,

 I have written this function

 /* The following function fuses two loops.  */

 void
 fuse_loops (struct loop *loop_a, struct loop *loop_b)
 {
  debug_loop (loop_a, 10);
  debug_loop (loop_b, 10);
  block_stmt_iterator bsi_a = bsi_start (loop_a-header);
  block_stmt_iterator bsi_b = bsi_last (loop_b-header);
  bsi_move_before (bsi_a, bsi_b);
  fprintf (stderr,  transferred one statement from loop %d to loop %d
 , loop_a-num, loop_b-num);
  debug_loop (loop_a, 10);
  debug_loop (loop_b, 10);
  cancel_loop_tree (loop_a);
 }

 It moved one statement from loop_a to loop_b. In the same way I must
 tranfer all other statements too. I get a internal compiler error at 
 cancel_loop_tree(loop_a);  . After transfering statemnts from loop_a
 to loop_b I need to delete the loop_a from current_loops . How can we
 do this?

 Thanks,
 Sandeep.



 On Fri, Apr 4, 2008 at 7:31 PM, Zdenek Dvorak [EMAIL PROTECTED] wrote:
  Hi,
 
I am trying to fuse two loops in tree level. For that, I am trying to
transfer statements in the header of one loop to the header of the
other one.
The  codehttp://rafb.net/p/fha0IG57.html   contains the 2 loops.
After moving a statement from one BB to another BB, do I need to
update any other info?
 
   you will need to update SSA form; other than that, just using bsi_move_after
   to move the relevant statements should work.
 
 
 I need to transfer all the statements of bb_6 to bb_3. Can any one
please tell me what is the exact procedure.
Can i simply use add_bb_to_loop() and add bb_6 to loop_1 ?
 
   No; in the case that you describe, moving the statements one by one is
   probably the simplest way (you could also move whole basic block, but
   it is more complicated, and since you still need to update SSA form,
   you would need to process the statements anyway).
 
   Zdenek
 


Doubt about scheduling

2008-04-10 Thread Mohamed Shafi
Hello all,

I got few doubts regarding the way in which scheduling works in gcc 4.1.2

1. Will barrier insns gets scheduled along with other instructions?
2. When there is an unconditional jump in the instruction list, a
barrier instruction gets emitted after the unconditional jump as the
last instruction. Will this be regarded as an instruction when
counting the number of instructions in a region for scheduling
purposes?
3. After the end of scheduling a region can barrier remain as the last
instruction in the ready list unscheduled? Or in other words can ready
list be 'non-empty' after scheduling a region?

Regards,
Shafi


Re: more m32c brokenness

2008-04-10 Thread Richard Guenther
On Wed, Apr 9, 2008 at 10:40 PM, DJ Delorie [EMAIL PROTECTED] wrote:

  I tracked it down to this:


 /* Allow conversions between integral types and pointers only if
there is no sign or zero extension involved.  */
 if (((POINTER_TYPE_P (type)  INTEGRAL_TYPE_P (TREE_TYPE (op)))
  || (POINTER_TYPE_P (TREE_TYPE (op))  INTEGRAL_TYPE_P (type)))
  TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (op)))
   return false;

  The code does not do what the comment says.  It also requires that
  there be no truncation.

  However, of course, other parts of the compiler complain about
  truncation as well.

  The root cause is this:

   ptr = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (ptr), ptr,
  fold_convert (sizetype, vtable));

  We fold_convert to sizetype, without regard for whether it's the same
  precision as TREE_TYPE (ptr).  vtable is the right size, ptr is the
  right size, but we're creating an intermediate that's the wrong size.

  Can we put in a calculate-unsigned-for-type call here?  That should be
  sizetype for everyone else, but the special type for m32c.

This particular case indeed needs fixing (I assume vtable is a pointer).
There is build_nonstandard_integer_type for this.

Richard.


Mapping back to original variables after SSA optimizations

2008-04-10 Thread Fran Baena
Hi all,

i have a doubt about unSSA: is it allways possible to map back the
versioned variables to the original variable? If it could be possible,
is there an algorithm that describe this translation back?
I have read the paper Efficiently computing static single assignment
form and the control dependence graph (cytron91) and no way to
translate back from SSA is explained, it only points out that after
SSA optimizations dead code elminitation and allocation by
colloring are recommended to be performed.

Thanks

Fran


Re: Fusing two loops

2008-04-10 Thread Sandeep Maram
Hi,
The error is rectified. The bug is in the function that calls fuse_loops().
Now I am trying to transfer all the statements, using code -

/* The following function fuses two loops.  */

void
fuse_loops (struct loop *loop_a, struct loop *loop_b)
{
  debug_loop (loop_a, 10);
  debug_loop (loop_b, 10);
  block_stmt_iterator bsi_a = bsi_start (loop_a-header);
  block_stmt_iterator bsi_a_last = bsi_last (loop_a-header);
  block_stmt_iterator bsi_b = bsi_last (loop_b-header);
  while (bsi_a != bsi_a_last)
{
  bsi_move_before (bsi_a, bsi_b);
  fprintf (stderr,  transferred one statement from loop %d to
loop %d , loop_a-num, loop_b-num);
  bsi_next (bsi_a);
}
  debug_loop (loop_a, 10);
  debug_loop (loop_b, 10);
  cancel_loop_tree (loop_a);
}

After doing this I get a segmentation fault , after 3 statements of
loop_a are transferred to loop_b.

Program received signal SIGSEGV, Segmentation fault.
0x08436245 in tsi_next (i=0xb5b0) at ../../trunk/gcc/tree-iterator.h:74
74i-ptr = i-ptr-next;

Thanks,
Sandeep.

On Thu, Apr 10, 2008 at 5:57 PM, Zdenek Dvorak [EMAIL PROTECTED] wrote:
 Hi,


   I have written this function
  
   /* The following function fuses two loops.  */
  
   void
   fuse_loops (struct loop *loop_a, struct loop *loop_b)
   {
debug_loop (loop_a, 10);
debug_loop (loop_b, 10);
block_stmt_iterator bsi_a = bsi_start (loop_a-header);
block_stmt_iterator bsi_b = bsi_last (loop_b-header);
bsi_move_before (bsi_a, bsi_b);
fprintf (stderr,  transferred one statement from loop %d to loop %d
   , loop_a-num, loop_b-num);
debug_loop (loop_a, 10);
debug_loop (loop_b, 10);
cancel_loop_tree (loop_a);
   }
  
   It moved one statement from loop_a to loop_b. In the same way I must
   tranfer all other statements too. I get a internal compiler error at 
   cancel_loop_tree(loop_a); 

  where exactly (can you send me a backtrace)?  It does not seem possible
  for cancel_loop_tree to ICE, if fuse_loops is the only function that you
  call.

  Zdenek



I wished to write to you

2008-04-10 Thread Pamela Gregg
Hello!!!

I find your email in internet and I wished to write to you.
You do not know me... and I do not know you. But I trust in destiny and I hope 
that destiny give me a chance  
I want to find a kind, honest and clever man.
My name - Natalya. My age-26 years.It is difficult to tell about myself. If 
this is of any interest to you, write to me
I hope, I can see your letter soon. In the following letter I to tell about 
myself and send my photos. 

Write on my personal email:  [EMAIL PROTECTED]
now I write with the work and my chief does not know about it. 

Sincerely,
Natalya.


Re: US-CERT Vulnerability Note VU#162289

2008-04-10 Thread Robert C. Seacord

Gerald,

Here is another version of the program (same compiler version/flags). 


#include stdio.h

void test_signed(char *buf) {
   signed int len;

   len = 130;

   printf(buf = %p; buf+len = %p; buf+len  buf = %d %d,
   buf, buf+len, buf+len  buf, (uintptr_t)buf+len  (uintptr_t)buf);
   if((buf+len  buf) != ((uintptr_t)buf+len  (uintptr_t)buf))
   printf( BUG!);
   printf(\n);
}


void test_unsigned(char *buf) {
   unsigned int len;

   len = 130;

   printf(buf = %p; buf+len = %p; buf+len  buf = %d %d,
   buf, buf+len, buf+len  buf, (uintptr_t)buf+len  (uintptr_t)buf);
   if((buf+len  buf) != ((uintptr_t)buf+len  (uintptr_t)buf))
   printf( BUG!);
   printf(\n);
}

int main(void) {
   test_signed(0);
   test_signed((char*)0x7000);
   test_signed((char*)0xf000);

   test_unsigned(0);
   test_unsigned((char*)0x7000);
   test_unsigned((char*)0xf000);
   return 0;
}

output:

buf = ; buf+len = 4000; buf+len  buf = 0 0
buf = 7000; buf+len = B000; buf+len  buf = 0 0
buf = F000; buf+len = 3000; buf+len  buf = 1 1
buf = ; buf+len = 4000; buf+len  buf = 0 0
buf = 7000; buf+len = B000; buf+len  buf = 0 0
buf = F000; buf+len = 3000; buf+len  buf = 1 1

The unsigned test was one we performed on the gcc versions.  I added the 
signed test, but it didn't make a difference on Visual Studio.  My 
understanding is that it shouldn't, because the real issue here is 
pointer arithmetic and the resulting type should always be a pointer.


rCs


Robert C. Seacord wrote:
  

void f(char *buf)  {
  unsigned int len = len = 0xFF00;

  if (buf+len  buf) puts(true);

}



You need to be more precise. That is not the same example
that you quoted for GCC.

In fact, if you vary the criteria too much, you will find
situations where GCC already behaved that way. The test in
the following example is optimized out by old versions of
GCC (certainly my version 3.4.5 compiler does it, with no
warnings even when using -Wall):

 int f(char *buf, int i)
 {
 i = 130;

 if ((int)buf + i  (int)buf)
 return 0;

 return 1;
 }

That's quite a bit less changed than your example, which
brings unsigned-ness into the picture. [This is exactly
the problem--signed overflow and pointer overflow aren't
defined, unlike unsigned overflow.]

Given that current Microsoft compilers reportedly exhibit
this behavior, it sounds like the advisory is going to at
least need some significant rewriting. :-)

-Jerry
  




Re: Problem with reloading in a new backend...

2008-04-10 Thread Stelian Pop

Le mercredi 09 avril 2008 à 18:21 -0400, DJ Delorie a écrit :
  Maybe I should reserve a special register for this usage (say r0).
 
 That might be the only way, yes.

Ok, I reserved r0 (BP_REGNUM) for such reloads, and I'm generating new
instructions in LEGITIMIZE_RELOAD_ADDRESS to calculate the memory
address:

if (GET_CODE (*x) == PLUS
 GET_CODE (XEXP (*x, 0)) == REG
 GET_CODE (XEXP (*x, 1)) == CONST_INT) {
rtx reginsn, setinsn, plusinsn;
reginsn = gen_rtx_REG(Pmode, BP_REGNUM);
setinsn = gen_rtx_SET(Pmode, reginsn, XEXP (*x, 1));
plusinsn = gen_rtx_SET(Pmode, reginsn, gen_rtx_PLUS(Pmode, 
reginsn, XEXP (*x, 0)));

emit_insn_before(setinsn, insn);
emit_insn_before(plusinsn, insn);
*x = reginsn;

return 1;
}

Does this sound ok ?

Note that I needed to use emit_insn_before() in order to insert the
instructions, and emit_insn_before() needs the current 'insn', which
is not passed by LEGITIMIZE_RELOAD_ADDRESS(), so I needed to modify the
macro. Is there something I miss here ?

 Note that reload also assumes that such adds don't change the flags
 (i.e.  a compare/jump pair must not have a flag-modifying add between
 them).

I think this won't happen because I emit the compare/conditional branch
insn at the same time, in beq/bne/bgt... etc define_insn() (like many
other targets).

Thanks.
-- 
Stelian Pop [EMAIL PROTECTED]



Re: Fusing two loops

2008-04-10 Thread Zdenek Dvorak
Hi,

 The error is rectified. The bug is in the function that calls fuse_loops().
 Now I am trying to transfer all the statements, using code -
 
 /* The following function fuses two loops.  */
 
 void
 fuse_loops (struct loop *loop_a, struct loop *loop_b)
 {
   debug_loop (loop_a, 10);
   debug_loop (loop_b, 10);
   block_stmt_iterator bsi_a = bsi_start (loop_a-header);
   block_stmt_iterator bsi_a_last = bsi_last (loop_a-header);
   block_stmt_iterator bsi_b = bsi_last (loop_b-header);
   while (bsi_a != bsi_a_last)
 {
   bsi_move_before (bsi_a, bsi_b);
   fprintf (stderr,  transferred one statement from loop %d to
 loop %d , loop_a-num, loop_b-num);
   bsi_next (bsi_a);
 }

try

bsi_b = bsi_last (loop_b-header);

for (bsi_a = bsi_start (loop_a-header); !bsi_end_p (bsi_a); )
  {
if (some condition)  /* you probably want to skip labels and cond_exprs */
  bsi_move_before (bsi_a, bsi_b);
else
  bsi_next (bsi_a);
  }

Zdenek


Re: Problem with reloading in a new backend...

2008-04-10 Thread Stelian Pop

Le jeudi 10 avril 2008 à 15:48 +0200, Stelian Pop a écrit :
 Le mercredi 09 avril 2008 à 18:21 -0400, DJ Delorie a écrit :
   Maybe I should reserve a special register for this usage (say r0).
  
  That might be the only way, yes.
 
 Ok, I reserved r0 (BP_REGNUM) for such reloads, and I'm generating new
 instructions in LEGITIMIZE_RELOAD_ADDRESS to calculate the memory
 address:
[...]

Now it seems that the register moves are correctly dealt with, but I'm
still having the same problem on calls: just like indirect addressing,
indirect calls are allowed only on even registers.

My patterns look like:

(define_insn *icall_value
  [(set (match_operand 0 register_operand =r)
(call (mem:QI (match_operand:QI 1 register_operand z))
  (match_operand:QI 2  )))]
 
   icall (%1)
  [(set_attr cc none)]
)

(define_expand call_value
  [(set (match_operand 0 register_operand =r)
(call (match_operand:QI 1 memory_operand m)
  (match_operand:QI 2 general_operand )))]
 
   {   
if (GET_CODE (XEXP(operands[1], 0)) != REG)
XEXP(operands[1], 0) = force_reg (QImode, XEXP 
(operands[1], 0));
   }
)

This gives:

(insn 27 26 29 2 ../../../../src/gcc-4.3.0/libgcc/../gcc/libgcc2.c:564 
(set (reg/f:QI 114)
(symbol_ref:QI (__lshrqi3) [flags 0x41])) 1 {*movqi} 
(expr_list:REG_EQUIV (symbol_ref:QI (__lshrqi3) [flags 0x41])
(nil)))

...

(call_insn/u 30 29 31 2 
../../../../src/gcc-4.3.0/libgcc/../gcc/libgcc2.c:564 (set (reg:QI 4 r4) 
(call (mem:QI (reg/f:QI 114) [0 S1 A16])
(const_int 0 [0x0]))) 37 {*icall_value} (expr_list:REG_DEAD 
(reg:QI 5 r5) 
(expr_list:REG_EH_REGION (const_int -1 [0x])
(nil)))
(expr_list:REG_DEP_TRUE (use (reg:QI 5 r5))
(expr_list:REG_DEP_TRUE (use (reg:QI 4 r4 [ D.2373 ])) 
(nil

And r114 gets reloaded into r1:

Reloads for insn # 30
Reload 0: reload_in (QI) = (symbol_ref:QI (__lshrqi3) [flags 0x41])
 EIGHT_REGS, RELOAD_FOR_INPUT (opnum = 1), can't combine
 reload_in_reg: (reg/f:QI 114)
 reload_reg_rtx: (reg:QI 1 r1)

Which does not satisfy the *icall_value constraints:

../../../../src/gcc-4.3.0/libgcc/../gcc/libgcc2.c: In function 
‘__mulhi3’:
../../../../src/gcc-4.3.0/libgcc/../gcc/libgcc2.c:570: error: insn does 
not satisfy its constraints:
(call_insn/u 30 195 162 2 
../../../../src/gcc-4.3.0/libgcc/../gcc/libgcc2.c:564 (set (reg:QI 4 r4)
(call (mem:QI (reg:QI 1 r1) [0 S1 A16])
(const_int 0 [0x0]))) 37 {*icall_value} 
(expr_list:REG_EH_REGION (const_int -1 [0x])
(nil))
(expr_list:REG_DEP_TRUE (use (reg:QI 5 r5))
(expr_list:REG_DEP_TRUE (use (reg:QI 4 r4 [ D.2373 ]))
(nil

It seems that this reload doesn't pass through LEGITIMIZE_ADDRESS or
LEGITIMIZE_RELOAD_ADDRESS... How can I specify here to choose an EVEN_REGS
in place of the EIGHT_REGS (in fact it should choose one register in the 
intersection of EIGHT and EVEN_REGS) ?
 
Thanks,

-- 
Stelian Pop [EMAIL PROTECTED]



GCC 4.2.4 Status Report (2008-04-10)

2008-04-10 Thread Joseph S. Myers
Status
==

The GCC 4.2 branch is open for commits under normal release branch
rules.  All fixes going on that branch should first have gone on trunk
and 4.3 branch.

I propose to build 4.2.4-rc1 once we have resolved what if any changes
related to strict-overflow and pointer arithmetic should go on the
branch.  Any further 4.2 releases after 4.2.4 may depend on whether
there is expressed user and developer interest in further releases
from this branch, or whether 4.3 has been widely adopted in place of
4.2.

Quality Data


Priority  # Change from Last Report
--- ---
P1   230
P2  137 +  2
P3   38 -  3
--- ---
Total   198 -  1

Previous Report
===

http://gcc.gnu.org/ml/gcc/2008-03/msg01080.html

I will send the next report for the 4.2 branch when making the
4.2.4-rc1 release candidate.

-- 
Joseph S. Myers
[EMAIL PROTECTED]


address taken problem

2008-04-10 Thread Dasarath Weeratunge
In the following code I marked the tree 'node.0' as address taken using
'c_mark_addressable'. Now in the assembly code, isn't the return value of the
second call to malloc completely discarded?

This problem does not arise in -O0. Here I'm using -O2.


main ()
{
  void * D.2897;
  struct node * D.2898;
  struct node * node.0;
  void * D.2900;
  int * D.2901;
  int * D.2902;
  struct node * node;

  D.2897 = malloc (8);
  D.2898 = (struct node *) D.2897;
  node = D.2898;
  node.0 = node;
  D.2900 = malloc (4);
  D.2901 = (int *) D.2900;
  node.0-item = D.2901;--
  node.0 = node;
  D.2902 = node.0-item;
  printf (%p %p\n[0], D.2902, node);
}


main:
.LFB5:
  subq  $24, %rsp
.LCFI0:
  movl  $8, %edi
  call  malloc
  movl  $4, %edi
  movq  %rax, 16(%rsp)
  call  malloc
  movq  16(%rsp), %rax
  leaq  16(%rsp), %rdx
  movl  $.LC0, %edi
  movq  (%rax), %rsi
  xorl  %eax, %eax
  call  printf
  addq  $24, %rsp
  ret


The code that is generated when I do not modify the flag.

main:
.LFB5:
  pushq %rbx
.LCFI0:
  movl  $8, %edi
  subq  $16, %rsp
.LCFI1:
  call  malloc
  movl  $4, %edi
  movq  %rax, %rbx
  movq  %rax, 8(%rsp)
  call  malloc
  movq  %rax, (%rbx)
  movq  8(%rsp), %rax
  leaq  8(%rsp), %rdx
  movl  $.LC0, %edi
  movq  (%rax), %rsi
  xorl  %eax, %eax
  call  printf
  addq  $16, %rsp
  popq  %rbx
  ret


thanks,
-- dasarath


Re: Doubt about scheduling

2008-04-10 Thread Ian Lance Taylor
Mohamed Shafi [EMAIL PROTECTED] writes:

 I got few doubts regarding the way in which scheduling works in gcc 4.1.2

 1. Will barrier insns gets scheduled along with other instructions?

The scheduler works over regions.  It doesn't look at barriers.

 2. When there is an unconditional jump in the instruction list, a
 barrier instruction gets emitted after the unconditional jump as the
 last instruction. Will this be regarded as an instruction when
 counting the number of instructions in a region for scheduling
 purposes?

It shouldn't.

 3. After the end of scheduling a region can barrier remain as the last
 instruction in the ready list unscheduled? Or in other words can ready
 list be 'non-empty' after scheduling a region?

As far as I know barriers won't get onto the ready list.

If you see otherwise when running the compiler, then I am wrong.

Ian


Re: Problem with reloading in a new backend...

2008-04-10 Thread DJ Delorie

   (call (mem:QI (match_operand:QI 1 register_operand z))

Are you sure your z constraint only matches even numbered hard
registers?


Re: Problem with reloading in a new backend...

2008-04-10 Thread Stelian Pop

Le jeudi 10 avril 2008 à 15:30 -0400, DJ Delorie a écrit :
  (call (mem:QI (match_operand:QI 1 register_operand z))
 
 Are you sure your z constraint only matches even numbered hard
 registers?

Well, I think so:

enum reg_class
{
  NO_REGS,
  BP_REGS,
  STACK_REGS,
  EIGHT_REGS,
  EVEN_REGS,
  GENERAL_REGS,
  ALL_REGS,
  LIM_REG_CLASSES
};

#define N_REG_CLASSES ((int) LIM_REG_CLASSES)

#define REG_CLASS_CONTENTS  \
{   \
  { 0x },   \
  { 0x0001 },   \
  { 0x8000 },   \
  { 0x00FF },   \
  { 0x },   \
  { 0x7FFE },   \
  { (1LL  FIRST_PSEUDO_REGISTER) - 1 }\
}

...

(define_register_constraint z EVEN_REGS
  Even registers (r0,r2,r4, @dots{} r30))


-- 
Stelian Pop [EMAIL PROTECTED]



Re: Problem with reloading in a new backend...

2008-04-10 Thread hutchinsonandy

I noticed


Stack register is missing from ALL_REGS.

Are registers 16bit? Is just one required for pointer?



Andy




Re: Problem with reloading in a new backend...

2008-04-10 Thread Stelian Pop

Le jeudi 10 avril 2008 à 15:56 -0400, [EMAIL PROTECTED] a écrit :
 I noticed
 
 
 Stack register is missing from ALL_REGS.

No, it is not. It is missing from GENERAL_REGS but not from ALL_REGS.

 Are registers 16bit? 

Yes.

 Is just one required for pointer?

For now, yes, I chose to support only 2^16 RAM addresses.

In fact, this microcontroller is able to address 2^24, and two registers
are used for indirect accesses (Rx and Rx+1, where x is even), this is
the reason why only even registers are allowed in indirect addressing...

-- 
Stelian Pop [EMAIL PROTECTED]



gcc-4.3-20080410 is now available

2008-04-10 Thread gccadmin
Snapshot gcc-4.3-20080410 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.3-20080410/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

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

You'll find:

gcc-4.3-20080410.tar.bz2  Complete GCC (includes all of below)

gcc-core-4.3-20080410.tar.bz2 C front end and core compiler

gcc-ada-4.3-20080410.tar.bz2  Ada front end and runtime

gcc-fortran-4.3-20080410.tar.bz2  Fortran front end and runtime

gcc-g++-4.3-20080410.tar.bz2  C++ front end and runtime

gcc-java-4.3-20080410.tar.bz2 Java front end and runtime

gcc-objc-4.3-20080410.tar.bz2 Objective-C front end and runtime

gcc-testsuite-4.3-20080410.tar.bz2The GCC testsuite

Diffs from 4.3-20080403 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.3
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.


A doubt about constraint modifiers

2008-04-10 Thread Mohamed Shafi
Hello all,

I have noticed that when strict_low_part is used in a patten we need
to use '+' as the constraint modifier if any constraints are used in
the patterns.
Why is this so?

Regards,
Shafi


[Bug preprocessor/35326] [4.2/4.3/4.4 regression] ICE with stray digraph token

2008-04-10 Thread reichelt at gcc dot gnu dot org


--- Comment #5 from reichelt at gcc dot gnu dot org  2008-04-10 06:16 
---
I can still reproduce it with trunk, 4.3 branch and 4.2 branch from 2008-04-07.
I can't reproduce it on x86_64, though (no segfault, no valgrind error).

Did you try adding random characters before %:%: ?
Maybe this changes memory layout so much that you see the segfault, too.

Concerning comment #3: I cannot imagine that pfile-buffer was 0 from the
beginning. It looks as if something trampled on the memory later. (I'd have
to check that, though.) That would also explain the totally different error
in the original report (and why you don't run into trouble with the same
testcase).


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35326



[Bug ada/35880] GNAT (GCC) Ada does not generate symbolic debug for shared memory

2008-04-10 Thread charlet at gcc dot gnu dot org


--- Comment #7 from charlet at gcc dot gnu dot org  2008-04-10 06:21 ---
reopening


-- 

charlet at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|WAITING |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2008-04-10 06:21:40
   date||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35880



[Bug tree-optimization/35821] Internal compiler error: segmentation fault

2008-04-10 Thread irar at il dot ibm dot com


--- Comment #10 from irar at il dot ibm dot com  2008-04-10 07:10 ---
Fixed.


-- 

irar at il dot ibm dot com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35821



[Bug tree-optimization/35869] ICE in calc_dfs_tree at -O2 -gnatp after VRP optimization

2008-04-10 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2008-04-10 10:31 ---
*** Bug 35894 has been marked as a duplicate of this bug. ***


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||marcus at jet dot franken
   ||dot de


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35869



[Bug tree-optimization/35894] ICE in calc_dfs_tree, at dominance.c:393

2008-04-10 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2008-04-10 10:31 ---


*** This bug has been marked as a duplicate of 35869 ***


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35894



[Bug tree-optimization/34006] [4.2 Regression] vectorization with 64-bit integers

2008-04-10 Thread victork at gcc dot gnu dot org


--- Comment #6 from victork at gcc dot gnu dot org  2008-04-10 10:36 ---
The problem in reduced testcase is that loop gets vectorized by gcc 4.2 despite
a dependency between iterations with distance 1.
compute_data_dependences_for_loop () returns chrec_known for DDR {
ivec(iclass), ivec(iclass-1) }.

Here is part of dump produced by scev in 4.2:

(compute_affine_dependence
  (stmt_a =
D.1282_9 = (*ivec_8)[D.1281_7])
  (stmt_b =
(*ivec_8)[D.1280_6] = D.1284_13)
(subscript_dependence_tester
(analyze_overlapping_iterations
  (chrec_a = {0, +, 1}_1)
  (chrec_b = {1, +, 1}_1)
(analyze_siv_subscript
(analyze_subscript_affine_affine
  (overlaps_a = scev_known)
  (overlaps_b = scev_known)
)
)
  (overlap_iterations_a = scev_known)
  (overlap_iterations_b = scev_known)
)
(dependence classified: scev_known)
)
)


While in gcc 4.3 the scev produces the following dump for same DDR:

(compute_affine_dependence
  (stmt_a =
D.970_9 = (*ivec_8(D))[D.969_7])
  (stmt_b =
(*ivec_8(D))[D.968_6] = D.972_13)
(subscript_dependence_tester
(analyze_overlapping_iterations
  (chrec_a = {0, +, 1}_1)
  (chrec_b = {1, +, 1}_1)
(analyze_siv_subscript
(analyze_subscript_affine_affine
  (overlaps_a = [1 + 1 * x_1]
)
  (overlaps_b = [0 + 1 * x_1]
)
)
)
  (overlap_iterations_a = [1 + 1 * x_1]
)
  (overlap_iterations_b = [0 + 1 * x_1]
)
)
(analyze_overlapping_iterations
  (chrec_a = 0B)
  (chrec_b = 0B)
(analyze_ziv_subscript
)
  (overlap_iterations_a = [0]
)
  (overlap_iterations_b = [0]
)
)
(build_classic_dist_vector
  dist_vector = (  1
  )
)
)
)


Sebastian, can you take a look?
Thanks.


-- 

victork at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||spop at gcc dot gnu dot org
 AssignedTo|victork at gcc dot gnu dot  |spop at gcc dot gnu dot org
   |org |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34006



[Bug c++/35898] C++ exception bug at run time when mutually recursive functions

2008-04-10 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2008-04-10 10:40 ---
Your exception specification on small, medium and large makes throws from the
recursively called dummy_test bogus.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35898



[Bug c/35899] New: ICE on filesystem code

2008-04-10 Thread megari at mbnet dot fi
I get an ICE on some filesystem code I'm developing when trying to compile it
with GCC 4.3.0.

[EMAIL PROTECTED]:~/gcc-bug$ gcc-4.3 -v -save-temps -o sfs_unittests.o  -O2 -g 
-I.
-std=c99 -Wall -W -c sfs_unittests.c 
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure linux gnu
Thread model: posix
gcc version 4.3.1 20080401 (prerelease) (Debian 4.3.0-3) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'sfs_unittests.o' '-O2' '-g' '-I.'
'-std=c99' '-Wall' '-W' '-c' '-mtune=generic'
 /usr/lib/gcc/i486-linux-gnu/4.3.1/cc1 -E -quiet -v -I. sfs_unittests.c
-mtune=generic -std=c99 -Wall -W -fworking-directory -O2 -fpch-preprocess -o
sfs_unittests.i
ignoring nonexistent directory /usr/local/include/i486-linux-gnu
ignoring nonexistent directory
/usr/lib/gcc/i486-linux-gnu/4.3.1/../../../../i486-linux-gnu/include
ignoring nonexistent directory /usr/include/i486-linux-gnu
#include ... search starts here:
#include ... search starts here:
 .
 /usr/local/include
 /usr/lib/gcc/i486-linux-gnu/4.3.1/include
 /usr/lib/gcc/i486-linux-gnu/4.3.1/include-fixed
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-o' 'sfs_unittests.o' '-O2' '-g' '-I.'
'-std=c99' '-Wall' '-W' '-c' '-mtune=generic'
 /usr/lib/gcc/i486-linux-gnu/4.3.1/cc1 -fpreprocessed sfs_unittests.i -quiet
-dumpbase sfs_unittests.c -mtune=generic -auxbase-strip sfs_unittests.o -g -O2
-Wall -W -std=c99 -version -o sfs_unittests.s
GNU C (Debian 4.3.0-3) version 4.3.1 20080401 (prerelease) (i486-linux-gnu)
compiled by GNU C version 4.3.1 20080401 (prerelease), GMP version
4.2.2, MPFR version 2.3.1.
warning: GMP header version 4.2.2 differs from library version 4.2.1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: c8e3951360ed7273beac0a50e7fd5f3d
In file included from sfs_unittests.c:4:
fs/sfs_xplatform.h: In function ‘sfs_write_file’:
fs/sfs_xplatform.h:130: warning: implicit declaration of function
‘sfs_native_write_block’
fs/sfs_xplatform.h:148: warning: implicit declaration of function
‘sfs_native_read_block’
sfs_unittests.c: At top level:
sfs_unittests.c:5: warning: conflicting types for ‘sfs_native_write_block’
fs/sfs_xplatform.h:130: warning: previous implicit declaration of
‘sfs_native_write_block’ was here
sfs_unittests.c:11: warning: conflicting types for ‘sfs_native_read_block’
fs/sfs_xplatform.h:148: warning: previous implicit declaration of
‘sfs_native_read_block’ was here
sfs_unittests.c: In function ‘printbl’:
sfs_unittests.c:18: warning: implicit declaration of function ‘printf’
sfs_unittests.c:18: warning: incompatible implicit declaration of built-in
function ‘printf’
sfs_unittests.c: In function ‘main’:
sfs_unittests.c:64: warning: incompatible implicit declaration of built-in
function ‘printf’
fs/sfs_xplatform.h: In function ‘sfs_remove_bytes’:
fs/sfs_xplatform.h:250: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See file:///usr/share/doc/gcc-4.3/README.Bugs for instructions.
[EMAIL PROTECTED]:~/gcc-bug$


-- 
   Summary: ICE on filesystem code
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: megari at mbnet dot fi


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35899



[Bug c/35899] ICE on filesystem code

2008-04-10 Thread megari at mbnet dot fi


--- Comment #1 from megari at mbnet dot fi  2008-04-10 12:09 ---
Created an attachment (id=15464)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15464action=view)
Preprocessed source


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35899



[Bug c/35900] New: typecast (sign extension) missing

2008-04-10 Thread holger dot hopp at sap dot com
In the following example the typecast (sign extension) from int
(32bit) to long (64bit) is missing. Before the compare the signed i1
is  0 and unsigned u2 is  0 and this should be kept when casting to
64bit long. Same issue for long long (also 64bit).
So we get correct ov=1 with gcc version = 4.2, but wrong ov=0 with
gcc version = 4.3. 
This issue occurs with and without optimization.

gcc version:  gcc-4_3_branch and trunk svn revision 133752
  (gcc-4_2 and below runs fine)


int main()
{
  int ov;
  unsigned u2;
  int i1;

  i1 = 0;
  u2 = (unsigned)2147483647 + 1 ;
  (i1) += (u2);
  if ( (long)(i1)(long)(u2) ) ov = 1; else ov = 0;

  return !ov;
}


-- 
   Summary: typecast (sign extension) missing
   Product: gcc
   Version: 4.3.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: holger dot hopp at sap dot com
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35900



[Bug middle-end/35897] DSE doesn't support targets with wide registers

2008-04-10 Thread hjl dot tools at gmail dot com


--- Comment #3 from hjl dot tools at gmail dot com  2008-04-10 13:32 ---
A patch is posted at

http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00837.html


-- 

hjl dot tools at gmail dot com changed:

   What|Removed |Added

URL||http://gcc.gnu.org/ml/gcc-
   ||patches/2008-
   ||04/msg00837.html
   Keywords||patch


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35897



[Bug c/35900] typecast (sign extension) missing

2008-04-10 Thread rguenth at gcc dot gnu dot org


--- Comment #1 from rguenth at gcc dot gnu dot org  2008-04-10 13:45 ---
I belive this was fixed by

Author: rguenth
Date: Tue Apr  8 22:03:33 2008
New Revision: 134110

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=134110
Log:
2008-04-08  Richard Guenther  [EMAIL PROTECTED]

* fold-const.c (fold_widened_comparison): Do not allow
sign-changes that change the result.

* gcc.c-torture/execute/20080408-1.c: New testcase.

Added:
branches/gcc-4_3-branch/gcc/testsuite/gcc.c-torture/execute/20080408-1.c
  - copied unchanged from r134108,
trunk/gcc/testsuite/gcc.c-torture/execute/20080408-1.c
Modified:
branches/gcc-4_3-branch/gcc/ChangeLog
branches/gcc-4_3-branch/gcc/fold-const.c
branches/gcc-4_3-branch/gcc/testsuite/ChangeLog


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.3.1


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35900



[Bug middle-end/35897] DSE doesn't support targets with wide registers

2008-04-10 Thread hjl at gcc dot gnu dot org


--- Comment #4 from hjl at gcc dot gnu dot org  2008-04-10 14:06 ---
Subject: Bug 35897

Author: hjl
Date: Thu Apr 10 14:05:52 2008
New Revision: 134163

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=134163
Log:
2008-04-09  H.J. Lu  [EMAIL PROTECTED]

PR middle-end/35897
* dse.c (store_info): Add a FIXME for positions_needed.
(fill_bitmask): New.
(record_store): Assert width = size of positions_needed *
CHAR_BIT.  Call fill_bitmask to initialize positions_needed.
(check_mem_read_rtx): Use long on mask.  Call fill_bitmask to
set mask.

Modified:
branches/ix86/avx/gcc/ChangeLog.avx
branches/ix86/avx/gcc/dse.c


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35897



[Bug ada/35902] New: xml ada installation bug in slackware

2008-04-10 Thread olcay dot alic at gmail dot com
Hi,
Hi,
I have installed gnat-gpl on my Linux machine. And then from the same directory
under sources folder I extracted the xml-ada library. And started to install
it. I executed the configure command successfully.
But then I tried to make by executing make -f Makefile.314 install command.
Then after a series of normal output the execution was interrupted.
And I observed the following output.


…..
cc -c -I./ -I../../unicode -I../../input_sources -I../../sax -I../../dom -I../
-O2 -gnatN -I- ../../sax/sax-attributes.adb
+===GNAT BUG DETECTED==+
| 3.3.6 (i486-slackware-linux-gnu) in expand_call, at calls.c:3098 |
| Error detected at
/usr/lib/gcc-lib/i486-slackware-linux/3.3.6/adainclude/s-secsta.ads:65:14|
| Please submit a bug report; see http://gcc.gnu.org/bugs.html.|
| Include the entire contents of this bug box in the report.   |
| Include the exact gcc or gnatmake command that you entered.  |
| Also include sources listed below in gnatchop format |
| concatenated together with no headers between files. |
+==+

Please include these source files with error report

../../sax/sax-attributes.adb
../../sax/sax-attributes.ads
../../sax/sax.ads
../../unicode/unicode.ads
../../unicode/unicode-ces.ads
../../sax/sax-models.ads
../../unicode/unicode.adb
../../unicode/unicode-names.ads
../../unicode/unicode-names-basic_latin.ads
../../unicode/unicode-names-latin_extended_a.ads

compilation abandoned
gnatmake: ../../sax/sax-attributes.adb compilation error
make[1]: *** [sax-attributes.o] Error 4
make[1]: Leaving directory
`/mnt/IS/olya/gnat-gpl/x86-linux/sources/xmlada-2.1/sax'
make: *** [sax] Error 2


-- 
   Summary: xml ada installation bug in slackware
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: ada
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: olcay dot alic at gmail dot com


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35902



[Bug ada/35902] xml ada installation bug in slackware

2008-04-10 Thread charlet at gcc dot gnu dot org


--- Comment #1 from charlet at gcc dot gnu dot org  2008-04-10 14:41 ---
You should probably report this to slackware then.

Note that you are not using gnat gpl in your report, but a very old GCC version
(3.3.6), so I'd suggest trying with a newer version, where things will
very likely work.


-- 

charlet at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||WORKSFORME


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35902



[Bug c/35900] typecast (sign extension) missing

2008-04-10 Thread holger dot hopp at sap dot com


--- Comment #2 from holger dot hopp at sap dot com  2008-04-10 16:15 ---
You're right!
Great - the fix is faster available than expected!
Thank you.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35900



[Bug c++/35331] [4.3/4.4 regression] ICE with invalid specialization of variadic template

2008-04-10 Thread pcarlini at suse dot de


--- Comment #2 from pcarlini at suse dot de  2008-04-10 17:05 ---
Seems doable...


-- 

pcarlini at suse dot de changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |pcarlini at suse dot de
   |dot org |
 Status|NEW |ASSIGNED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35331



[Bug target/27234] no way to stop gcc from mucking with the incoming argument stack

2008-04-10 Thread jakub at gcc dot gnu dot org


--- Comment #15 from jakub at gcc dot gnu dot org  2008-04-10 17:40 ---
The i?86 Linux kernel just got bitten by this again, see
https://bugzilla.redhat.com/show_bug.cgi?id=427707
In this case, it wasn't about a tail call, but I believe high register pressure
that caused modification of the incoming stack slot, which is undesirable for
kernel asmlinkage functions.

The #c14 patch after small fixup (s/preserve-stack/preserve_stack/) fixes some
cases, but certainly all, on the other side pessimizes code even where it is
not strictly necessary (though it is unclear how hard would it be to improve
that).

On f1 already vanilla gcc doesn't modify the incoming stack area, and the patch
just pessimizes it by reading all arguments into registers and then storing
them 
into a different stack slot, eventhough d argument is actually never modified
and so could be used directly from the stack slot, avoiding one move from
memory and one move to memory.  f2 is an example where the patch doesn't help
at all,
and incoming stack area is modified even with the patch.  On f3 the patch
properly prevents doing tail call, as that would actually modify the incoming
stack area.  But on f4 there is no need to avoid the tail call.

I guess we could live with avoiding all tail calls, but a) need a fix for f2
b) for f1 I'd say at expand time for -O1+ we should know whether an argument
is TREE_ADDRESSABLE or not, and whether it is ever modified or not, which could
help us avoid unnecessary copying.  Still will need to make sure reloading
won't
push anything into the incoming registers area.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27234



[Bug target/27234] no way to stop gcc from mucking with the incoming argument stack on ia32/x86_64

2008-04-10 Thread jakub at gcc dot gnu dot org


--- Comment #16 from jakub at gcc dot gnu dot org  2008-04-10 18:09 ---
From the kernel people it would be interesting to hear on which targets they
actually need it (e.g. if it is i?86 only, it would be better implemented as
i?86 specific syscall_linkage attribute).


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||jakub at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27234



[Bug target/27234] no way to stop gcc from mucking with the incoming argument stack on ia32

2008-04-10 Thread jakub at gcc dot gnu dot org


--- Comment #17 from jakub at gcc dot gnu dot org  2008-04-10 18:13 ---
x86_64 actually isn't a problem, as it passes integral arguments in registers
(and kernel only uses at most 6 syscall arguments).  Structures aren't passed
by value.


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

Summary|no way to stop gcc from |no way to stop gcc from
   |mucking with the incoming   |mucking with the incoming
   |argument stack on   |argument stack on ia32
   |ia32/x86_64 |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27234



[Bug c/35903] New: false warning when passing quoted string to function strcmp(arg,no);

2008-04-10 Thread rsa at us dot ibm dot com
When building libm-test.c (part of the GLIBC make check math test suite for
GLIBC CVS head as of April 10, 2008) with GCC 4.3 I get the following warning:

math/libm-test.c: In function 'parse_opt':
math/libm-test.c:6102: warning: array subscript is above array bounds

In relation to the following code:

  if (strcmp (arg, yes) == 0)

This warning goes away if replaced with:
  char yes[] = yes;
  if (strcmp (arg,yes) == 0)

Andrew Pinski says this is a false warning and that I should file a bug report.


-- 
   Summary: false warning when passing quoted string to function
strcmp(arg,no);
   Product: gcc
   Version: 4.3.1
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rsa at us dot ibm dot com
 GCC build triplet: n/a
  GCC host triplet: n/a
GCC target triplet: n/a


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35903



[Bug c/35903] false warning when passing quoted string to function strcmp(arg,no);

2008-04-10 Thread rsa at us dot ibm dot com


--- Comment #1 from rsa at us dot ibm dot com  2008-04-10 18:57 ---
Created an attachment (id=15465)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15465action=view)
preprocessed test-ildouble.c file.

strcmp on line 16036 seems to be the problematic one.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35903



[Bug c/35903] false warning when passing quoted string to function strcmp(arg,no);

2008-04-10 Thread rsa at us dot ibm dot com


--- Comment #2 from rsa at us dot ibm dot com  2008-04-10 18:58 ---
Compiled with:
cd /home/ryanarn/glibc/stages/stage_lround/glibc/math

/opt/at43/bin/gcc -m32 test-ildoubl.c -save-temps -c -std=gnu99 -fgnu89-inline
-O2 -Wall -Winline -Wwrite-strings -fmerge-all-constants -g -mcpu=power4
-mlong-double-128 -mnew-mnemonics -Wstrict-prototypes -mlong-double-128   
-Wno-uninitialized -D__NO_MATH_INLINES -D__LIBC_INTERNAL_MATH_INLINES
-I../include
-I/home/ryanarn/glibc/stages/stage_lround/build/glibc32_power4/math
-I/home/ryanarn/glibc/stages/stage_lround/build/glibc32_power4
-I../sysdeps/powerpc/powerpc32/elf -I../sysdeps/powerpc/elf
-I../sysdeps/unix/sysv/linux/powerpc/powerpc32/power4/fpu
-I../sysdeps/powerpc/powerpc32/power4/fpu
-I../sysdeps/unix/sysv/linux/powerpc/powerpc32/power4
-I../sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu
-I../sysdeps/powerpc/powerpc32/fpu
-I../nptl/sysdeps/unix/sysv/linux/powerpc/powerpc32
-I../sysdeps/unix/sysv/linux/powerpc/powerpc32
-I../nptl/sysdeps/unix/sysv/linux/powerpc -I../sysdeps/unix/sysv/linux/powerpc
-I../sysdeps/ieee754/ldbl-128ibm -I../sysdeps/ieee754/ldbl-opt
-I../nptl/sysdeps/unix/sysv/linux -I../nptl/sysdeps/pthread
-I../sysdeps/pthread -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu
-I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet
-I../nptl/sysdeps/unix/sysv -I../sysdeps/unix/sysv -I../sysdeps/unix/powerpc
-I../nptl/sysdeps/unix -I../sysdeps/unix -I../sysdeps/posix
-I../sysdeps/powerpc/powerpc32/power4 -I../sysdeps/powerpc/powerpc32
-I../sysdeps/wordsize-32 -I../sysdeps/powerpc/fpu -I../sysdeps/powerpc/math
-I../nptl/sysdeps/powerpc -I../sysdeps/powerpc -I../sysdeps/ieee754/dbl-64
-I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754 -I../sysdeps/generic/elf
-I../sysdeps/generic -I../nptl  -I.. -I../libio -I. -nostdinc -isystem
/opt/at43/lib/gcc/powerpc64-linux/4.3.0/include -isystem
/opt/at43/lib/gcc/powerpc64-linux/4.3.0/include-fixed -isystem /usr/include
-D_LIBC_REENTRANT -include ../include/libc-symbols.h   -DNOT_IN_libc=1
-U__LIBC_INTERNAL_MATH_INLINES -D__FAST_MATH__ -DTEST_FAST_MATH -fno-builtin  
-o
/home/ryanarn/glibc/stages/stage_lround/build/glibc32_power4/math/test-ildoubl.o
-MD -MP -MF
/home/ryanarn/glibc/stages/stage_lround/build/glibc32_power4/math/test-ildoubl.o.dt
-MT
/home/ryanarn/glibc/stages/stage_lround/build/glibc32_power4/math/test-ildoubl.o


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35903



[Bug fortran/35831] Type-mismatch check missing for dummy procedure argument

2008-04-10 Thread jaydub66 at gmail dot com


--- Comment #4 from jaydub66 at gmail dot com  2008-04-10 21:09 ---
To me it's also not completely clear what the standard says on this, but the
way to fix it would probably be to insert some additional check into
operator_correspondence (interface.c), where currently only the type and rank
of the arguments is checked.


To require full equality of all array borders (as suggested in my comment #2),
one could simply add

  if (!gfc_compare_array_spec (f1-sym-as, f2-sym-as))
return 1;

into the above mentioned routine. This would result in gfortran behaving the
same way as ifort in this case, may it be standard-conforming or not.


If on the other hand Tobias is right in the assumption he made in comment #3,
then one could something along the lines of

  if (f1-sym-as-type != f2-sym-as-type)
return 1;

to require only the array types to be equal, or something similar to at least
prevent assumed-shape arrays from being passed instead of eplicit-shape arrays.


My feeling is that at least the array size should match for explicit-shape
arrays, but this is just a feeling and I couldn't find anything in the standard
to confirm this.

I'm not sure if the changes I'm suggesting would interfere with any other case
where 'operator_correspondence' is called, but at least they don't seem to
trigger any regressions.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35831



[Bug c++/35904] New: Poor error message

2008-04-10 Thread chris at bubblescope dot net
The code:
void grab(int i);

int main(void)
{ grab(1); }

Produces the useful and informative error:

invalid initialization of non-const reference of type ‘int’ from a temporary
of type ‘int’

Whereas the code:


templatetypename T
void grab(T t, int i);

int main(void)
{ grab(1,1); }

Produces the much less useful

no matching function for call to ‘grab(int, int)’

Would it be possible to still get the error message about temporaries in the
templated case?


-- 
   Summary: Poor error message
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: chris at bubblescope dot net


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35904



[Bug target/35768] gcc.c-torture/compile/20010226-1.c:22: ICE: in do_output_reload, at reload1.c:7331

2008-04-10 Thread danglin at gcc dot gnu dot org


--- Comment #8 from danglin at gcc dot gnu dot org  2008-04-10 22:51 ---
Subject: Bug 35768

Author: danglin
Date: Thu Apr 10 22:50:49 2008
New Revision: 134182

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=134182
Log:
PR target/35768
* pa.md: Define mode iterator P.  Define mode attribute dwc.
(dcacheflush): Update pattern to use iterator P and attribute dwc.
(icacheflush): Likewise.
* pa.h (INITIALIZE_TRAMPOLINE): Use dcacheflushsi/icacheflushsi if
!TARGET_64BIT, and dcacheflushdi/icacheflushdi if TARGET_64BIT.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/pa/pa.h
trunk/gcc/config/pa/pa.md


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35768



[Bug target/35768] gcc.c-torture/compile/20010226-1.c:22: ICE: in do_output_reload, at reload1.c:7331

2008-04-10 Thread danglin at gcc dot gnu dot org


--- Comment #9 from danglin at gcc dot gnu dot org  2008-04-10 22:52 ---
Fixed.


-- 

danglin at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35768



[Bug other/35905] New: gcc 4.2.3 still contains many GPL v2 references

2008-04-10 Thread carlton at bactrian dot org
I just downloaded GCC 4.2.3, and discovered that it states in several places
that it's using GPL v2 instead of v3; my impression from following the mailing
lists is that it (and even 4.2.2) should be GPL v3.

One example (a particularly important one, since it's most exposed to the user)
is the manual:
http://gcc.gnu.org/onlinedocs/gcc-4.2.3/gcc/Copying.html#Copying.  Also, the
top-level directory of the source contains v2 versions of COPYING and
COPYING.LIB.  (I don't know what, if any, files within the tree refer to the
top-level versions of those files, instead of the versions within
subdirectories, but it is at the very least confusing to only have v2 versions
at the top level.)  Another example I ran across is that files in libstdc++/src
refer to GPL v2.  (Though, given the presence of the exception there, there's
probably little difference between v2 and v3...)


-- 
   Summary: gcc 4.2.3 still contains many GPL v2 references
   Product: gcc
   Version: 4.2.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: other
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: carlton at bactrian dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35905



[Bug other/35905] gcc 4.2.3 still contains many GPL v2 references

2008-04-10 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2008-04-10 23:17 ---
(Though, given the presence of the exception there, there's
probably little difference between v2 and v3...)

Actually this is why those have not been moved yet.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35905



[Bug other/35905] gcc 4.2.3 still contains many GPL v2 references

2008-04-10 Thread pinskia at gcc dot gnu dot org


--- Comment #2 from pinskia at gcc dot gnu dot org  2008-04-10 23:19 ---
(In reply to comment #1)
 Actually this is why those have not been moved yet.

And more to the point, the FSF lawyers have not decided how to word the
exception for the GPLv3.

Now Copying.html is a different story and I think was already fixed.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35905



[Bug other/35905] gcc 4.2.3 still contains many GPL v2 references

2008-04-10 Thread pinskia at gcc dot gnu dot org


--- Comment #3 from pinskia at gcc dot gnu dot org  2008-04-10 23:20 ---
(In reply to comment #2)
 Now Copying.html is a different story and I think was already fixed.
And has: http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00106.html .


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35905



[Bug other/35905] gcc 4.2.3 still contains many GPL v2 references

2008-04-10 Thread pinskia at gcc dot gnu dot org


--- Comment #4 from pinskia at gcc dot gnu dot org  2008-04-10 23:21 ---
I don't think we should keep this bug opened any more as the only issue left to
fix is really in the FSF hands and they are already working on it.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35905



[Bug other/35905] gcc 4.2.3 still contains many GPL v2 references

2008-04-10 Thread carlton at bactrian dot org


--- Comment #5 from carlton at bactrian dot org  2008-04-10 23:30 ---
Thanks for the info.  I just did a spot check on the trunk and
4.2 branch: it looks like all the currently fixable issues I raised are fixed
in the trunk, and Copying.html is probably fixed in the branch (I saw
gpl_v3.texi).  But there's no COPYING3{,.LIB} at the toplevel
of the 4.2 branch, which I think is important to reduce confusion.

I didn't spot check the 4.3 or 4.1 branches.  (Is 4.1 still open?
I don't remember.)


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35905



[Bug c++/19476] Missed null checking elimination with new

2008-04-10 Thread ian at airs dot com


--- Comment #12 from ian at airs dot com  2008-04-10 23:33 ---
Note that bug 35878, which was closed as a duplicate of this one, was a case of
placement new.  For placement new the check for a NULL pointer is particularly
useless, as the language standard says that placement new is required to return
the pointer which was passed in.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19476



[Bug other/35905] gcc 4.2.3 still contains many GPL v2 references

2008-04-10 Thread pinskia at gcc dot gnu dot org


--- Comment #6 from pinskia at gcc dot gnu dot org  2008-04-10 23:34 ---
(Is 4.1 still open? I don't remember.)

Yes but no  see the thread starting at
http://gcc.gnu.org/ml/gcc/2008-03/msg00163.html .

4.3 branch should be have already COPYING3{,.LIB} as it was the trunk when they
were added.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35905



[Bug c++/35884] defining __need_size_t before including cstddef causes error

2008-04-10 Thread stdin at stdin dot me dot uk


--- Comment #2 from stdin at stdin dot me dot uk  2008-04-11 03:36 ---
You define __need_size_t when you want to pull in the definition of size_t but
not other typedefs/functions. It's the standard way to get the size_t type.


-- 

stdin at stdin dot me dot uk changed:

   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|INVALID |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35884