[Bug fortran/28167] New: ICE: in fold_binary, at fold-const.c:8239 (temporary character array?)

2006-06-26 Thread anlauf at gmx dot de
Here's another ICE, probably related to temporary character arrays:

gfcbug34.f90: In function 'MAIN__':
gfcbug34.f90:1: internal compiler error: in fold_binary, at fold-const.c:8239

It dies on:

  call foo ( (/ (' ',i=1,m) /) )

Testcase attached.

Cheers,
-ha


-- 
   Summary: ICE: in fold_binary, at fold-const.c:8239 (temporary
character array?)
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: anlauf at gmx dot de
  GCC host triplet: i686-pc-linux-gnu


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



[Bug fortran/28167] ICE: in fold_binary, at fold-const.c:8239 (temporary character array?)

2006-06-26 Thread anlauf at gmx dot de


--- Comment #1 from anlauf at gmx dot de  2006-06-26 07:53 ---
Created an attachment (id=11755)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11755&action=view)
Testcase


-- 


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



[Bug fortran/28167] ICE: in fold_binary, at fold-const.c:8239 (temporary character array?)

2006-06-26 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2006-06-26 08:24 ---
Confirmed.  We end up in gfc_trans_create_temp_array

  size = fold_build2 (MULT_EXPR, gfc_array_index_type, size,
  TYPE_SIZE_UNIT (gfc_get_element_type (type)));

with type being a record type 'struct array1_unknown', so TYPE_SIZE_UNIT
(gfc_get_element_type (type)) returns zero.  gfc_get_element_type (type)
returns charD.14[1:] (!??), so maybe the fix is to use TYPE_SIZE_UNIT
(TREE_TYPE (... ))) here.  (This doesn't fix it, we also pass size == 0 to the
MULT_EXPR,
so we'll end up with a size of zero here)

So maybe the bug is that size and nelem are both zero...  who knows ;)


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Keywords||ice-on-valid-code
   Last reconfirmed|-00-00 00:00:00 |2006-06-26 08:24:32
   date||


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



[Bug tree-optimization/28144] floating point constant -> byte/char/short conversion is wrong for java

2006-06-26 Thread aph at gcc dot gnu dot org


--- Comment #2 from aph at gcc dot gnu dot org  2006-06-26 09:45 ---
Thank you for this patch.

It seems to be a patch for the core constant folding code.  Would it not be
more
appropriate to do this in the Java front end's function convert() (in
java/typeck.c) ?


-- 


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



[Bug tree-optimization/28144] floating point constant -> byte/char/short conversion is wrong for java

2006-06-26 Thread joern dot rennecke at st dot com


--- Comment #3 from joern dot rennecke at st dot com  2006-06-26 11:19 
---
Subject: Re:  floating point constant -> byte/char/short conversion is wrong
for java

aph at gcc dot gnu dot org wrote:

>--- Comment #2 from aph at gcc dot gnu dot org  2006-06-26 09:45 ---
>Thank you for this patch.
>
>It seems to be a patch for the core constant folding code.  Would it not be
>more
>appropriate to do this in the Java front end's function convert() (in
>java/typeck.c) ?
>  
>
The current implementation has been patched allegedly for the benefit of 
java, with the side effect of
giving different results between -O0 and -O1 for some (unspecified or 
undefined) conversions for C/C++.
Having user bugs masked by -O0 makes debugging harder, so this is a 
quality of implementation issue.
The proposed patch would also address this issue.


-- 


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



[Bug c++/28169] New: Tertiary operator: object creation and initialization

2006-06-26 Thread joseph dot rajesh at gmail dot com
This is totally unexpected (for me atleast…) behaviour I encountered in C++. I
was using g++ version 3.4.2 (DevC++) 

class Base{
public:
   Base() { cout << "Base ctor..." << endl;  }
   virtual ~Base() { cout << "~Base called..." << endl; }

virtual void Show() const
   {
   cout << "Base show called..." << endl;
   }
};

class Derived: public Base{
public:
   Derived() { cout << "Derived ctor..." << endl; }
   ~Derived() { cout << "~Derived called..." << endl; }

virtual void Show() const
   {
   cout << "Derived show called..." << endl;
   }
};

Now I used the tertiary operator to create the objects of derived and base.
Following is the piece of code which does this…

   {
bool bFlag = false;
const Base& ref = (bFlag)? Base(): Derived();
ref.Show();
}

This code works as expected when the value of "bFlag" is true but the whole
problem come when the value of bFlag is false…
Output

Base ctor...
Derived ctor...
~Derived called...
~Base called...
   Base show called...
   ~Base called...

So you might notice that the destructor of Derived class is being called before
the function Sow is called. And more over the Show function called is of Base
instead of Derived….i.e. Instead of Derived's object Base's object is created..

Extract from the C++ standard!!!

=> if the second and third operand have different types, and either has
(possibly cv-qualified) class type, an attempt is made to convert each of those
operands to the type of the other. The process for determining whether an
operand expression E1 of type T1 can be converted to match an operand
expression E2 of type T2 is defined as follows:

…..— if E1 and E2 have class type, and the underlying class types are the same
or one is a base class of the other: E1 can be converted to match E2 if the
class of T2 is the same type as, or a base class of, the class of T1, and the
cv-qualification of T2 is the same cv-qualification as, or a greater
cvqualification than, the cv-qualification of T1. If the conversion is applied,
E1 is changed to an rvalue of type T2 that still refers to the original source
class object (or the appropriate subobject thereof). [Note: that is, no copy is
made.]

…..

Using this process, it is determined whether the second operand can be
converted to match the third operand, and whether the third operand can be
converted to match the second operand. If both can be converted, or one can be
converted but the conversion is ambiguous, the program is ill-formed. If
neither can be converted, the operands are left unchanged and further checking
is performed as described below. If exactly one conversion is possible, that
conversion is applied to the chosen operand and the converted operand is used
in place of the original operand for the remainder of this section.
Opinion

Therefore, it is clear that a conversion is taking place but it is also made
clear that no copy is made "E1 is changed to an rvalue of type T2 that still
refers to the original source class object (or the appropriate subobject
thereof). [Note: that is, no copy is made.]"…. Therefore in the above example a
copy of "Base" is made instead of refering to "Derived" class object (can be
confirmed by checking the call to Show function). Which I think is a bug in
gcc.


-- 
   Summary: Tertiary operator: object creation and initialization
   Product: gcc
   Version: 3.4.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: joseph dot rajesh at gmail dot com


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



[Bug middle-end/28075] [4.1 Regression] inliner introduces unnecessary type conversions

2006-06-26 Thread danglin at gcc dot gnu dot org


--- Comment #7 from danglin at gcc dot gnu dot org  2006-06-26 13:45 ---
This test is still failing on hppa64-hp-hpux11.11.


-- 

danglin at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||danglin at gcc dot gnu dot
   ||org


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



[Bug middle-end/28075] [4.1 Regression] inliner introduces unnecessary type conversions

2006-06-26 Thread dave at hiauly1 dot hia dot nrc dot ca


--- Comment #8 from dave at hiauly1 dot hia dot nrc dot ca  2006-06-26 
13:47 ---
Subject: Re:  [4.1 Regression] inliner introduces unnecessary type conversions

Attached dump.

Dave


--- Comment #9 from dave at hiauly1 dot hia dot nrc dot ca  2006-06-26 
13:47 ---
Created an attachment (id=11757)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11757&action=view)


-- 


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



[Bug middle-end/26991] Target Help Seg Fault.

2006-06-26 Thread corsepiu at gcc dot gnu dot org


--- Comment #2 from corsepiu at gcc dot gnu dot org  2006-06-26 14:34 
---
# m68k-rtems4.7-gcc --target-help 
Target specific options:
cc1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.

# m68k-rtems4.7-gcc --target-help -v
Using built-in specs.
Target: m68k-rtems4.7
Configured with: ../gcc-4.1.1/configure --prefix=/usr --bindir=/usr/bin
--includedir=/usr/include --libdir=/usr/lib --mandir=/usr/share/man
--infodir=/usr/share/info --datadir=/usr/share --build=i686-redhat-linux-gnu
--host=i686-redhat-linux-gnu --target=m68k-rtems4.7 --with-gnu-as --with-gnu-ld
--verbose --with-newlib --with-system-zlib --disable-nls
--without-included-gettext --disable-win32-registry
--enable-version-specific-runtime-libs --enable-languages=c,c++
Thread model: single
gcc version 4.1.1
 /usr/libexec/gcc/m68k-rtems4.7/4.1.1/cc1 -quiet -v help-dummy -quiet -dumpbase
help-dummy -auxbase help-dummy -version --target-help -o /tmp/cclQfte8.s

Target specific options:
cc1: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.


-- 

corsepiu at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||corsepiu at gcc dot gnu dot
   ||org
  Known to fail||4.1.1


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



[Bug target/27827] gcc 4 produces worse x87 code on all platforms than gcc 3

2006-06-26 Thread whaley at cs dot utsa dot edu


--- Comment #21 from whaley at cs dot utsa dot edu  2006-06-26 15:03 ---
Uros,

Thanks for the reply; I think some confusion has set in (see below) :)

>And the results are a bit suprising (this is the exact output of your test):

Note that you are running the opposite of my test case: SSE vs SSE rather than
x87 vs x87.  This whole bug report is about x87 performance.  You can get more
detail on why I want x87 in my messages above, particularly comment #11, but
single precision is indeed the place where SSE cannot compete with the x87
unit.  To see it, put the flags back the way I had them in the attachment, and
you'll see that gcc 3 is much faster.  Also, you should find in single
precision that the x87 unit soundly beats the SSE unit (unlike double
precision, where the gcc 3's x87 unit is only slightly faster than the best SSE
code).  I think the x87 will win even using gcc 4 for both compilations, even
though gcc 4's x87 support is crippled by its new register allocation scheme.

So, let me say what I think is going on here, and you can correct me if I've
gotten it wrong.  I think in this last timing you think you've found an
exception to the problem, but have forgotten we want to look at the x87 (which
is the fastest method in this case anyway).  Try it with my original flags
(essentially, throw '-mfpmath=387' instead of the sse flags), and you should
see that this gives far better performance using gcc 3 than any use of scalar
sse.  I think even gcc 4 will be better using its de-optimized x87 code,
because x87 is inherently better than scalar sse on these platforms.  There is
only one machine that likes the gcc 4's new x87 register usage pattern of all
the ones I've tested, and that is the CoreDue.

The issue is in x87 register usage: Gcc 4 saves a register, and does the FMUL
from memory rather than first loading the value to the fpstack, and on at least
the PentiumPRO, Pentium III, Pentium 4e, Pentium-D, Athlon-64 X2 and Opteron,
that drops your x87 (which is your best) performance significantly.

Note that given gcc 3's register usage, I think a simple peephole step can
transform it to gcc 4's, if you want to maintain that usage for CoreDuo. 
Unfortunately, going the other way requires an additional register, and the
load plays with your stack operands, so it is easier to keep gcc 3's way as the
default, and peephole to gcc 4's when on a machine that likes that usage
(currently, only the Core).

Thanks,
Clint


-- 


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



[Bug middle-end/28075] [4.1 Regression] inliner introduces unnecessary type conversions

2006-06-26 Thread pinskia at gmail dot com


--- Comment #10 from pinskia at gmail dot com  2006-06-26 16:02 ---
Subject: Re:  [4.1 Regression] inliner introduces unnecessary type conversions


On Jun 26, 2006, at 6:45 AM, danglin at gcc dot gnu dot org wrote:

>
>
> --- Comment #7 from danglin at gcc dot gnu dot org  2006-06-26  
> 13:45 ---
> This test is still failing on hppa64-hp-hpux11.11.

Yes the test has a simple problem of also matching the type even  
without the "()",
I have a fix but I have not applied it yet.

-- Pinski


-- 


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



[Bug middle-end/26991] Target Help Seg Fault.

2006-06-26 Thread corsepiu at gcc dot gnu dot org


--- Comment #3 from corsepiu at gcc dot gnu dot org  2006-06-26 16:41 
---
Traceback:

Program received signal SIGSEGV, Segmentation fault.
print_filtered_help (flag=4194304) at ../../gcc-4.1.1/gcc/opts.c:1301
(gdb) where
#0  print_filtered_help (flag=4194304) at ../../gcc-4.1.1/gcc/opts.c:1301
#1  0x081f61d7 in decode_options (argc=13, argv=0xbfc6fc34) at
../../gcc-4.1.1/gcc/opts.c:738
#2  0x08243b08 in toplev_main (argc=13, argv=0xbfc6fc34) at
../../gcc-4.1.1/gcc/toplev.c:1975
#3  0x080978f2 in main (argc=0, argv=0x1f9) at ../../gcc-4.1.1/gcc/main.c:35
#4  0x00b68724 in __libc_start_main () from /lib/libc.so.6
#5  0x08049ad1 in _start ()

The offending code is this (From gcc-4.1.1/gcc/opts.c):

1293   const char *help, *opt, *tab;
1294   static char *printed;
1295 
1296   if (flag == CL_COMMON || flag == CL_TARGET)
1297 {
1298   filter = flag;
1299   if (!printed)
1300 printed = xmalloc (cl_options_count);
1301   memset (printed, 0, cl_options_count);
1302 }

=> the SEGFAULT occurs in memset.

Could it be, "static char* printed" should be initialized = 0?

I.e. static char* printed = 0;


-- 


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



Re: [Bug middle-end/26991] Target Help Seg Fault.

2006-06-26 Thread Andrew Pinski


On Jun 26, 2006, at 9:41 AM, corsepiu at gcc dot gnu dot org wrote:




--- Comment #3 from corsepiu at gcc dot gnu dot org  2006-06-26  
16:41 ---

Traceback:

=> the SEGFAULT occurs in memset.

Could it be, "static char* printed" should be initialized = 0?


Looks like reload is storing to cl_options_count :).  There was a 4.2  
bug

about this, somehow it got exposed for 4.1.x now.

-- Pinski


[Bug middle-end/26991] Target Help Seg Fault.

2006-06-26 Thread pinskia at physics dot uc dot edu


--- Comment #4 from pinskia at physics dot uc dot edu  2006-06-26 16:46 
---
Subject: Re:  Target Help Seg Fault.


On Jun 26, 2006, at 9:41 AM, corsepiu at gcc dot gnu dot org wrote:

>
>
> --- Comment #3 from corsepiu at gcc dot gnu dot org  2006-06-26  
> 16:41 ---
> Traceback:
>
> => the SEGFAULT occurs in memset.
>
> Could it be, "static char* printed" should be initialized = 0?

Looks like reload is storing to cl_options_count :).  There was a 4.2  
bug
about this, somehow it got exposed for 4.1.x now.

-- Pinski


-- 


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



[Bug middle-end/26991] [4.1 Regression] Target Help Seg Fault.

2006-06-26 Thread pinskia at gcc dot gnu dot org


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|WAITING |NEW
 Ever Confirmed|0   |1
 GCC target triplet||i686-linux-gnu
  Known to work||4.2.0
   Last reconfirmed|-00-00 00:00:00 |2006-06-26 16:47:30
   date||
Summary|Target Help Seg Fault.  |[4.1 Regression] Target Help
   ||Seg Fault.
   Target Milestone|--- |4.1.2


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



[Bug middle-end/26991] [4.1 Regression] Target Help Seg Fault.

2006-06-26 Thread pinskia at gcc dot gnu dot org


--- Comment #5 from pinskia at gcc dot gnu dot org  2006-06-26 16:48 ---
PR 25636 was the 4.2.0 bug and the patch there should fix it if someone
backports it.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

  BugsThisDependsOn||25636


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



[Bug middle-end/26991] [4.1 Regression] Target Help Seg Fault.

2006-06-26 Thread corsepiu at gcc dot gnu dot org


--- Comment #6 from corsepiu at gcc dot gnu dot org  2006-06-26 17:01 
---
(In reply to comment #5)
> PR 25636 was the 4.2.0 bug and the patch there should fix it if someone
> backports it.

For the record, the compiler exposing this is FC5's gcc-4.1.1-1.fc5


-- 


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



[Bug middle-end/26991] [4.1 Regression] Target Help Seg Fault.

2006-06-26 Thread pinskia at gcc dot gnu dot org


--- Comment #7 from pinskia at gcc dot gnu dot org  2006-06-26 17:06 ---
(In reply to comment #6)
> For the record, the compiler exposing this is FC5's gcc-4.1.1-1.fc5

For the record, that is not a FSF release so it should be reported directly to
Redhat.


-- 


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



[Bug java/28153] Under Windows Xp the generated JNI headers need to have a '_' prepended for each function.

2006-06-26 Thread tromey at gcc dot gnu dot org


--- Comment #1 from tromey at gcc dot gnu dot org  2006-06-26 17:22 ---
Does the JDK's javah put that "_" into the generated header?

I suspect that you are seeing a problem with the C compiler, not a problem
with JNI header generation.
In particular I think that "_", most likely, should be added by the C
compiler and not added to the header.


-- 

tromey at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||tromey at gcc dot gnu dot
   ||org


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



[Bug c++/28169] Tertiary operator: object creation and initialization

2006-06-26 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-06-26 18:16 ---
Here is what is happening currently with GCC:
Base ctor...
Derived ctor...
Base copy ctor...
~Derived called...
~Base called...
Base show called...
~Base called...

So you missed the copy constructor, now I don't know if this is correct or not
yet.


-- 


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



[Bug c++/28169] Tertiary operator: object creation and initialization

2006-06-26 Thread pinskia at gcc dot gnu dot org


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-06-26 18:18 ---
Note ICC produces:
Base ctor...
Derived ctor...
~Derived called...
~Base called...
Base show called...

which might be just as bad.


-- 


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



[Bug regression/28170] New: Wrong result after swap byte in one word when compiled in 64-bit mode

2006-06-26 Thread bergner at vnet dot ibm dot com
A simple byte swap routine gets the wrong result when compiled with -m64 and
either -O1, -O2, -O3 or -Os.

[EMAIL PROTECTED]:~> /opt/biarch/gcc41-base/bin/gcc -O1 -m64 badswap.c
[EMAIL PROTECTED]:~> ./a.out
Before:   0x11  0x22  0x33  0x44  0x55  0x66  0x77  0x88
Result:   0x88  0x77  0x66  0x55  0x44  0x77  0x22  0x11
Expected: 0x88  0x77  0x66  0x55  0x44  0x33  0x22  0x11

Notice the third to last byte in "Result" is 0x77 when it should be 0x33.  This
works with -O0 and with gcc 3.4 or earlier versions.


-- 
   Summary: Wrong result after swap byte in one word when compiled
in 64-bit mode
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: regression
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bergner at vnet dot ibm dot com
 GCC build triplet: powerpc64-linux
  GCC host triplet: powerpc64-linux
GCC target triplet: powerpc64-linux


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



[Bug regression/28170] Wrong result after swap byte in one word when compiled in 64-bit mode

2006-06-26 Thread bergner at vnet dot ibm dot com


--- Comment #1 from bergner at vnet dot ibm dot com  2006-06-26 18:42 
---
Created an attachment (id=11758)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11758&action=view)
Simple test case to show the problem.

The bad code generation is in change_byte_order().


-- 


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



[Bug regression/28170] Wrong result after swap byte in one word when compiled in 64-bit mode

2006-06-26 Thread bergner at vnet dot ibm dot com


--- Comment #2 from bergner at vnet dot ibm dot com  2006-06-26 18:44 
---
Forgot to mention this fails on both the 4.1 branch and mainline.  It does work
with 3.4 and earlier versions.


-- 


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



[Bug ada/28171] New: FAIL: cd5003h

2006-06-26 Thread danglin at gcc dot gnu dot org
RUN cd5003h
/home/dave/gcc-4.2/objdir/gcc/xgcc -c -B/home/dave/gcc-4.2/objdir/gcc/ -gnatws
-
O2 -I/home/dave/gcc-4.2/objdir/gcc/testsuite/ada/acats/support cd5003h.adb
/home/dave/gcc-4.2/objdir/gcc/xgcc -c -B/home/dave/gcc-4.2/objdir/gcc/ -gnatws
-
O2 -I/home/dave/gcc-4.2/objdir/gcc/testsuite/ada/acats/support
cd5003h_pack3.adb
/home/dave/gcc-4.2/objdir/gcc/xgcc -c -I./ -B/home/dave/gcc-4.2/objdir/gcc/
-gna
tws -O2 -I/home/dave/gcc-4.2/objdir/gcc/testsuite/ada/acats/support -I-
/home/da
ve/gcc-4.2/objdir/gcc/testsuite/ada/acats/support/spprt13.ads
/home/dave/gcc-4.2/objdir/gcc/xgcc -c -I./ -B/home/dave/gcc-4.2/objdir/gcc/
-gna
tws -O2 -I/home/dave/gcc-4.2/objdir/gcc/testsuite/ada/acats/support -I-
/home/da
ve/gcc-4.2/objdir/gcc/testsuite/ada/acats/support/fcndecl.ads
gnatbind -aO./ -I/home/dave/gcc-4.2/objdir/gcc/testsuite/ada/acats/support -I-
-
x cd5003h.ali
gnatlink cd5003h.ali --GCC=/home/dave/gcc-4.2/objdir/gcc/xgcc
-B/home/dave/gcc-4
.2/objdir/gcc/
/home/dave/gcc-4.2/gcc/gcc/testsuite/ada/acats/run_all.sh: line 16:
/home/dave/g
cc-4.2/objdir/gcc/testsuite/ada/acats/tests/cd/cd5003h/cd5003h: No such file or
directory
FAIL:   cd5003h
/home/dave/opt/gnu/bin/ld: b~cd5003h.o: No such file: No such file or directory
collect2: ld returned 1 exit status
gnatlink: cannot call /home/dave/gcc-4.2/objdir/gcc/xgcc
gnatmake: *** link failed.

The above fail doesn't occur all the time.  This is what I see in
tests/cd/cd5003h:

[EMAIL PROTECTED]:~/gcc-4.2/objdir/gcc/testsuite/ada/acats/tests/cd/cd5003h$ ll
total 52
-rw-r--r-- 1 dave users  8572 Jun 26 02:22 b~cd5003h.adb
-rw-r--r-- 1 dave users 12313 Jun 26 02:22 b~cd5003h.ads
-rw-r--r-- 1 dave users   177 Jun 26 02:22 cd5003h.adb
-rw-r--r-- 1 dave users   170 Jun 26 02:22 cd5003h.log
-rw-r--r-- 1 dave users12 Jun 26 02:22 cd5003h.lst
-rw-r--r-- 1 dave users   850 Jun 26 02:22 cd5003h_pack3-pack4.adb
-rw-r--r-- 1 dave users   154 Jun 26 02:22 cd5003h_pack3.adb
-rw-r--r-- 1 dave users  1841 Jun 26 02:22 cd5003h_pack3.ads

The log file contains:

/home/dave/gcc-4.2/gcc/gcc/testsuite/ada/acats/run_all.sh: line 16:
/home/dave/g
cc-4.2/objdir/gcc/testsuite/ada/acats/tests/cd/cd5003h/cd5003h: No such file or
directory


-- 
   Summary: FAIL:   cd5003h
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: ada
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: danglin at gcc dot gnu dot org
 GCC build triplet: hppa-unknown-linux-gnu
  GCC host triplet: hppa-unknown-linux-gnu
GCC target triplet: hppa-unknown-linux-gnu


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



[Bug regression/28170] Wrong result after swap byte in one word when compiled in 64-bit mode

2006-06-26 Thread bergner at vnet dot ibm dot com


--- Comment #3 from bergner at vnet dot ibm dot com  2006-06-26 18:49 
---
Janis performed a regression hunt on mainline and identified this patch as the
start of the test failure:

r83568 | dje | 2004-06-23 21:19:00 + (Wed, 23 Jun 2004) | 7 lines

* config/rs6000/rs6000.c (rs6000_use_dfa_pipeline_interface): Delete.
(TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE): Redefine a hook_int_void_1.
(insvdi_rshift_rlwimi_p): New function.
* config/rs6000/rs6000.md (insvdi_internal2/3): New patterns.
(extendsfdf2): Convert to define_insn_and_split.
* config/rs6000/rs6000-protos.h (insvdi_rshift_rlwimi_p): Prototype.

http://gcc.gnu.org/viewcvs?view=rev&rev=83568


-- 

bergner at vnet dot ibm dot com changed:

   What|Removed |Added

 CC||janis at gcc dot gnu dot org


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



[Bug rtl-optimization/28170] Wrong result after swap byte in one word when compiled in 64-bit mode

2006-06-26 Thread dje at gcc dot gnu dot org


--- Comment #4 from dje at gcc dot gnu dot org  2006-06-26 18:51 ---
This appears to be a problem in the insvdi_internal2 and insvdi_internal3
combiner patterns.


-- 

dje at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-06-26 18:51:38
   date||


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



[Bug target/28170] [4.1/4.2 Regression] Wrong result after swap byte in one word when compiled in 64-bit mode

2006-06-26 Thread pinskia at gcc dot gnu dot org


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org
  Component|rtl-optimization|target
Summary|Wrong result after swap byte|[4.1/4.2 Regression] Wrong
   |in one word when compiled in|result after swap byte in
   |64-bit mode |one word when compiled in
   ||64-bit mode
   Target Milestone|--- |4.1.2


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



[Bug target/27363] ARM gcc 4.1 optimization bug

2006-06-26 Thread rguenth at gcc dot gnu dot org


--- Comment #8 from rguenth at gcc dot gnu dot org  2006-06-26 18:54 ---
One thing we have is some extra virtual operands from CCP:

before:

:
mask_5 = &old;
v_7 = mask_6;
#   SFT.2_33 = V_MAY_DEF ;
*mask_5 = *v_7;
mask_8 = mask_6;
v_10 = v_9;
i_11 = 0;
goto  ();



after:

:
mask_5 = &old;
v_7 = mask_6;
#   SFT.2 = V_MUST_DEF ;
#   VUSE ;
old = *v_7;
mask_8 = mask_6;
v_10 = v_9;
i_11 = 0;
goto  ();

all of the SFT.2 are actually the same tree object.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||dberlin at gcc dot gnu dot
   ||org


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



[Bug middle-end/24427] missing optimization opportunity with binary operators

2006-06-26 Thread ramana dot radhakrishnan at codito dot com


--- Comment #5 from ramana dot radhakrishnan at codito dot com  2006-06-26 
19:13 ---
This should be reopened. A related testcase shows a regression from 3.4.6 to
4.1.1 for m68k-elf shows a regression . combine used to take care of this in
3.4.6   . A backport of the patch is ready with me. If its allowed, I'll put it
up . 

This is the test case . 

#include 
int i;
int main (void)
{

  if ( ((i & ~1) | 1) != ( i | 1))
  printf ("abc");
}

3.4.6 generated 

   .file   "fail.c"
.text
.align  2
.globl  foo
.type   foo, @function
foo:
link.w %a6,#0
unlk %a6
rts
.size   foo, .-foo
.comm   i,4,2
.ident  "GCC: (GNU) 3.4.6"



4.1.2 pre-release generates  

.file   "fail.c"
.section.rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "abc"
.text
.align  2
.globl  main
.type   main, @function
main:
link.w %fp,#0
move.l %d2,-(%sp)
move.l i,%d1
moveq #-2,%d0
and.l %d1,%d0
moveq #1,%d2
or.l %d2,%d0
or.l %d2,%d1
cmp.l %d0,%d1
jbeq .L5
pea .LC0
jbsr printf
addq.l #4,%sp
.L5:
move.l -4(%fp),%d2
unlk %fp
rts
.size   main, .-main
.comm   i,4,2
.ident  "GCC: (GNU) 4.1.2 20060623 (prerelease)"


-- 

ramana dot radhakrishnan at codito dot com changed:

   What|Removed |Added

 CC||ramana dot radhakrishnan at
   ||codito dot com


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



[Bug fortran/28172] New: alternate return in contained procedure segfaults

2006-06-26 Thread tobi at gcc dot gnu dot org
[EMAIL PROTECTED]:~> cat t.f90
program blubb
  call otherini(*998)
  stop
998 stop
contains
 subroutine init
   call otherini(*999)
   return
999 stop
 end subroutine init
end program blubb
[EMAIL PROTECTED]:~> ~/src/gcc/build/stage3-gcc/f951 t.f90
 MAIN__ init
t.f90:6: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.
[EMAIL PROTECTED]:~> ~/src/gcc/build/stage3-gcc/f951 --version
GNU F95 version 4.2.0 20060618 (experimental) (i686-pc-linux-gnu)
compiled by GNU C version 4.2.0 20060618 (experimental).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
[EMAIL PROTECTED]:~>

Note that it seems necessary that the subroutine be called both from the
program and the contained procedure.


-- 
   Summary: alternate return in contained procedure segfaults
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tobi at gcc dot gnu dot org


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



[Bug regression/28173] New: 4.1.1 misses constant folding .

2006-06-26 Thread ramana dot radhakrishnan at codito dot com
A performance regression from 3.4.6 to 4.1.1 for m68k-elf.
combine used to take care of this in 3.4.6   . 

A backport of the patch for Bug #24427 works .  If its allowed, I'll put it up
. 

This is the test case . 

#include 
int i;
int main (void)
{

  if ( ((i & ~1) | 1) != ( i | 1))
  printf ("abc");
}

3.4.6 generated 

   .file   "fail.c"
.text
.align  2
.globl  foo
.type   foo, @function
foo:
link.w %a6,#0
unlk %a6
rts
.size   foo, .-foo
.comm   i,4,2
.ident  "GCC: (GNU) 3.4.6"



4.1.2 pre-release generates  

.file   "fail.c"
.section.rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "abc"
.text
.align  2
.globl  main
.type   main, @function
main:
link.w %fp,#0
move.l %d2,-(%sp)
move.l i,%d1
moveq #-2,%d0
and.l %d1,%d0
moveq #1,%d2
or.l %d2,%d0
or.l %d2,%d1
cmp.l %d0,%d1
jbeq .L5
pea .LC0
jbsr printf
addq.l #4,%sp
.L5:
move.l -4(%fp),%d2
unlk %fp
rts
.size   main, .-main
.comm   i,4,2
.ident  "GCC: (GNU) 4.1.2 20060623 (prerelease)"


-- 
   Summary: 4.1.1 misses constant folding .
   Product: gcc
   Version: 4.1.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: regression
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ramana dot radhakrishnan at codito dot com
  GCC host triplet: i686-linux
GCC target triplet: m68k-elf


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



[Bug target/28170] [4.1/4.2 Regression] Wrong result after swap byte in one word when compiled in 64-bit mode

2006-06-26 Thread pinskia at gcc dot gnu dot org


--- Comment #5 from pinskia at gcc dot gnu dot org  2006-06-26 20:10 ---
As an aside, I think we should produce two lwbrx instead and then combine them
for the double word (or ldbrx which only exists on Cell as far as I know) But
that is not here or there for this problem right now.


-- 


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



[Bug middle-end/28160] Bogus "size of array 'foo' is too large" error with -mms-bitfields

2006-06-26 Thread seongbae dot park at gmail dot com


--- Comment #1 from seongbae dot park at gmail dot com  2006-06-26 20:46 
---
I belive this is a bug in stor-layout.c:place_field() around line 10503
bitpos is calculated as bit_offset of rli->prev_field + type size.
However, the prev_field is not really the immediately previous field but the
first field of the consecutive same-sized fields.
Hence, in this case:

struct S
{
  long long d:23;
  int e:32;
  int f:32;
} a;

rli->prev_field is "d" when "field" is f. 
The correct fix should calculate the bitpos as 
rli->bitpos + type size.


-- 

seongbae dot park at gmail dot com changed:

   What|Removed |Added

 CC||seongbae dot park at gmail
   ||dot com


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



[Bug middle-end/28160] Bogus "size of array 'foo' is too large" error with -mms-bitfields

2006-06-26 Thread seongbae dot park at gmail dot com


--- Comment #2 from seongbae dot park at gmail dot com  2006-06-26 20:47 
---
Oops. Mu previous comment is misplaced. It should have been on PR28161. 
Please ignore it.


-- 


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



[Bug middle-end/28161] Wrong bit field layout with -mms-bitfields

2006-06-26 Thread seongbae dot park at gmail dot com


--- Comment #1 from seongbae dot park at gmail dot com  2006-06-26 20:47 
---
I belive this is a bug in stor-layout.c:place_field() around line 10503
bitpos is calculated as bit_offset of rli->prev_field + type size.
However, the prev_field is not really the immediately previous field but the
first field of the consecutive same-sized fields.
Hence, in this case:

struct S
{
  long long d:23;
  int e:32;
  int f:32;
} a;

rli->prev_field is "d" when "field" is f. 
The correct fix should calculate the bitpos as 
rli->bitpos + type size.


-- 

seongbae dot park at gmail dot com changed:

   What|Removed |Added

 CC||seongbae dot park at gmail
   ||dot com


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



[Bug fortran/28174] New: Corruption of multiple character arrays when passing array sections

2006-06-26 Thread anlauf at gmx dot de
Here's a very strange example of data corruption when passing
a character array section in the form

  call foo (a(:)(7:11))

to a subroutine even if the parameter is declared as INTENT(IN).
Furthermore, even another array gets corrupted which is intended
to hold a copy.

See testcase for details.

Cheers,
-ha


-- 
   Summary: Corruption of multiple character arrays when passing
array sections
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: anlauf at gmx dot de
  GCC host triplet: i686-pc-linux-gnu


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



[Bug fortran/28174] Corruption of multiple character arrays when passing array sections

2006-06-26 Thread anlauf at gmx dot de


--- Comment #1 from anlauf at gmx dot de  2006-06-26 20:58 ---
Created an attachment (id=11759)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11759&action=view)
Testcase

Output of testcase:

 Before foo:
 a(1)=abc def ghij
 a(2)=klm nop qrst
 b(1)=abc def ghij
 b(2)=klm nop qrst

 In foo: c(1)=f ghi

 After foo:
 a(1)=abc d
 a(2)=klm n
 b(1)=abc d
 b(2)=klm n
 Bug: array a corrupted in subroutine call!
 Bug: array b corrupted in subroutine call!


-- 


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



[Bug java/28153] Under Windows Xp the generated JNI headers need to have a '_' prepended for each function.

2006-06-26 Thread bcmpinc at hotmail dot com


--- Comment #2 from bcmpinc at hotmail dot com  2006-06-26 21:01 ---
(In reply to comment #1)
> Does the JDK's javah put that "_" into the generated header?
No, JDK's javah creates a header equivalent to the header created by 'gcjh
-jni'.

> I suspect that you are seeing a problem with the C compiler, not a problem
> with JNI header generation.
I tried compiling with JDK's jni-headers and the javah-header. It still needs
the "_" prepended.

> In particular I think that "_", most likely, should be added by the C
> compiler and not added to the header.
I think you're right, but it's strange that the C compiler should recognize
that it's compiling a native java function. Most exported non-java functions
don't have a "_" prepended, even if they're in a library containing a lot of
java functions.


-- 


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



[Bug middle-end/28160] Bogus "size of array 'foo' is too large" error with -mms-bitfields

2006-06-26 Thread seongbae dot park at gmail dot com


--- Comment #3 from seongbae dot park at gmail dot com  2006-06-26 21:08 
---
The immediate cause of the problem is in stor-layout.c:place_field():

   1118   if (DECL_SIZE (field) != NULL
   1119   && host_integerp (TYPE_SIZE (TREE_TYPE (field)), 0)
   1120   && host_integerp (DECL_SIZE (field), 0))
   1121 rli->remaining_in_alignment
   1122   = tree_low_cst (TYPE_SIZE (TREE_TYPE(field)), 1)
   1123 - tree_low_cst (DECL_SIZE (field), 1);

For the field "d", 
remiaining_in_alignment becomes negative after line 1121-1123
- because the DECL_SIZE is larger than TYPE_SIZE for "d".


-- 


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



[Bug middle-end/28161] Wrong bit field layout with -mms-bitfields

2006-06-26 Thread seongbae dot park at gmail dot com


--- Comment #2 from seongbae dot park at gmail dot com  2006-06-26 21:10 
---
More specifically:

   1048   if (rli->remaining_in_alignment < bitsize)
   1049 {
   1050   /* out of bits; bump up to next 'word'.  */
   1051   rli->offset = DECL_FIELD_OFFSET (rli->prev_field);
   1052   rli->bitpos
   1053 = size_binop (PLUS_EXPR, TYPE_SIZE (type),
   1054   DECL_FIELD_BIT_OFFSET
(rli->prev_field));
   1055   rli->prev_field = field;
   1056   rli->remaining_in_alignment
   1057 = tree_low_cst (TYPE_SIZE (type), 1);
   1058 }

The third operand of size_binop() of size_binop() at line 1053-1054 
should be rli->bitpos.


-- 


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



[Bug java/28153] Under Windows Xp the generated JNI headers need to have a '_' prepended for each function.

2006-06-26 Thread dannysmith at users dot sourceforge dot net


--- Comment #3 from dannysmith at users dot sourceforge dot net  2006-06-26 
21:21 ---
I think you may be running into a compiler (MSVC vs GNUC) difference between
handling of __stdcall (==JNICALL) symbols.

For a function void __stdcall foo (int), 
both MSVC and GNUC generate an assembler name of '[EMAIL PROTECTED]'.  The 
underscore is
prefix to all assembler names, the @4 is unique to stdcall

MSVC uses the name '[EMAIL PROTECTED]' in the dll export table when exporting 
from a dll,
but '[EMAIL PROTECTED]' when exporting from a staticly linked object.

GNUC uses '[EMAIL PROTECTED]' in both. 

If you look in info for binutils, under dlltool, you will see 
 --ext-prefix-alias  Add aliases with .
That might help.  However, I don't think that similar is supported by ld.

Danny


-- 


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



[Bug c++/28114] [4.0/4.1 regression] ICE with struct definition in argument of template function

2006-06-26 Thread sje at gcc dot gnu dot org


--- Comment #4 from sje at gcc dot gnu dot org  2006-06-26 21:25 ---
Subject: Bug 28114

Author: sje
Date: Mon Jun 26 21:25:23 2006
New Revision: 115025

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=115025
Log:
PR c++/28114
* g++.dg/other/pr28114.C: New.

Added:
trunk/gcc/testsuite/g++.dg/other/pr28114.C
Modified:
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug c++/27369] [4.1/4.2 Regression] tree check ICE when attribute externally_visible used

2006-06-26 Thread jason at gcc dot gnu dot org


--- Comment #10 from jason at gcc dot gnu dot org  2006-06-26 21:50 ---
The bug is that handle_externally_visible adds the second decl to cgraph_nodes
and then duplicate_decls discards it without removing it from cgraph_nodes.


-- 


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



[Bug c++/27424] [4.0/4.1/4.2 regression] Valid template-template-parameter rejected

2006-06-26 Thread jason at gcc dot gnu dot org


-- 

jason at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |jason at gcc dot gnu dot org
   |dot org |
 Status|NEW |ASSIGNED
   Last reconfirmed|2006-05-05 15:30:07 |2006-06-26 22:16:49
   date||


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



[Bug c++/27578] [4.2 Regression] ICE with attribute on a pointer in a function prototype

2006-06-26 Thread jason at gcc dot gnu dot org


--- Comment #9 from jason at gcc dot gnu dot org  2006-06-26 22:21 ---
Is this still broken? I can't reproduce it.


-- 


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



[Bug c++/27578] [4.2 Regression] ICE with attribute on a pointer in a function prototype

2006-06-26 Thread pinskia at gcc dot gnu dot org


--- Comment #10 from pinskia at gcc dot gnu dot org  2006-06-26 22:24 
---
Fixed by the patch which fixed PR 27648.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug c++/27768] [4.1/4.2 regression] wrong-code with vectors

2006-06-26 Thread jason at gcc dot gnu dot org


-- 

jason at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |jason at gcc dot gnu dot org
   |dot org |
 Status|NEW |ASSIGNED
   Last reconfirmed|2006-05-30 16:06:59 |2006-06-26 22:24:39
   date||


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



[Bug java/28153] Under Windows Xp the generated JNI headers need to have a '_' prepended for each function.

2006-06-26 Thread dannysmith at users dot sourceforge dot net


--- Comment #4 from dannysmith at users dot sourceforge dot net  2006-06-26 
22:26 ---
(In reply to comment #3)
> I think you may be running into a compiler (MSVC vs GNUC) difference between
> handling of __stdcall (==JNICALL) symbols.

Um, and this should all be taken care of by the #ifdef WIN32 code in
jni.cc:_Jv_LookupJNIMethod 

Danny


-- 


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



[Bug middle-end/28160] Bogus "size of array 'foo' is too large" error with -mms-bitfields

2006-06-26 Thread kkojima at gcc dot gnu dot org


--- Comment #4 from kkojima at gcc dot gnu dot org  2006-06-26 22:42 ---
Thanks for your comment. Perhaps one solution would be to handle
such bit fields with excessive sizes as the case of "no remaining
bits in alignment".  I'm testing the appended patch which changes
lines you've pointed out.

--- ORIG/trunk/gcc/stor-layout.c2006-06-13 09:06:36.0 +0900
+++ LOCAL/trunk/gcc/stor-layout.c   2006-06-26 16:43:12.0 +0900
@@ -1047,17 +1047,20 @@ place_field (record_layout_info rli, tre

  if (rli->remaining_in_alignment < bitsize)
{
+ HOST_WIDE_INT typesize = tree_low_cst (TYPE_SIZE (type), 1);
+
  /* out of bits; bump up to next 'word'.  */
- rli->offset = DECL_FIELD_OFFSET (rli->prev_field);
  rli->bitpos
-   = size_binop (PLUS_EXPR, TYPE_SIZE (type),
- DECL_FIELD_BIT_OFFSET (rli->prev_field));
+   = size_binop (PLUS_EXPR, rli->bitpos,
+ bitsize_int (rli->remaining_in_alignment));
  rli->prev_field = field;
- rli->remaining_in_alignment
-   = tree_low_cst (TYPE_SIZE (type), 1);
+ if (typesize < bitsize)
+   rli->remaining_in_alignment = 0;
+ else
+   rli->remaining_in_alignment = typesize - bitsize;
}
-
- rli->remaining_in_alignment -= bitsize;
+ else
+   rli->remaining_in_alignment -= bitsize;
}
  else
{
@@ -1119,9 +1121,16 @@ place_field (record_layout_info rli, tre
  if (DECL_SIZE (field) != NULL
  && host_integerp (TYPE_SIZE (TREE_TYPE (field)), 0)
  && host_integerp (DECL_SIZE (field), 0))
-   rli->remaining_in_alignment
- = tree_low_cst (TYPE_SIZE (TREE_TYPE(field)), 1)
-   - tree_low_cst (DECL_SIZE (field), 1);
+   {
+ HOST_WIDE_INT bitsize = tree_low_cst (DECL_SIZE (field), 1);
+ HOST_WIDE_INT typesize
+   = tree_low_cst (TYPE_SIZE (TREE_TYPE (field)), 1);
+
+ if (typesize < bitsize)
+   rli->remaining_in_alignment = 0;
+ else
+   rli->remaining_in_alignment = typesize - bitsize;
+   }

  /* Now align (conventionally) for the new type.  */
  type_align = TYPE_ALIGN (TREE_TYPE (field));


-- 


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



[Bug middle-end/28161] Wrong bit field layout with -mms-bitfields

2006-06-26 Thread kkojima at gcc dot gnu dot org


--- Comment #3 from kkojima at gcc dot gnu dot org  2006-06-26 23:10 ---
GDB says that TREE_TYPE of a.d is the 32-bit integer and its
DECL_BIT_FIELD_TYPE is 64-bit when place_field processes a.e.
place_field uses the size of TREE_TYPE of the previous bit filed
when deciding whether a bit field to be packed with the previous
one or not.  It seems that this makes the ms-bitfiled code
confused.  The appended patch is to make place_field use
DECL_BIT_FIELD_TYPE of the previous bit field instead of
TREE_TYPE when comparing the size of consecutive bit fields.
It works for the above testcase, though the thorough tests are
needed.

--- ORIG/trunk/gcc/stor-layout.c2006-06-13 09:06:36.0 +0900
+++ LOCAL/trunk/gcc/stor-layout.c   2006-06-26 16:44:31.0 +0900
@@ -1022,6 +1022,7 @@ place_field (record_layout_info rli, tre
   if (targetm.ms_bitfield_layout_p (rli->t))
 {
   tree prev_saved = rli->prev_field;
+  tree prev_type = prev_saved ? DECL_BIT_FIELD_TYPE (prev_saved) : NULL;

   /* This is a bitfield if it exists.  */
   if (rli->prev_field)
@@ -1037,8 +1038,7 @@ place_field (record_layout_info rli, tre
  && !integer_zerop (DECL_SIZE (rli->prev_field))
  && host_integerp (DECL_SIZE (rli->prev_field), 0)
  && host_integerp (TYPE_SIZE (type), 0)
- && simple_cst_equal (TYPE_SIZE (type),
-  TYPE_SIZE (TREE_TYPE (rli->prev_field
+ && simple_cst_equal (TYPE_SIZE (type), TYPE_SIZE (prev_type)))
{
  /* We're in the middle of a run of equal type size fields; make
 sure we realign if we run out of bits.  (Not decl size,
@@ -1105,8 +1108,7 @@ place_field (record_layout_info rli, tre

   if (!DECL_BIT_FIELD_TYPE (field)
  || (prev_saved != NULL
- ? !simple_cst_equal (TYPE_SIZE (type),
-  TYPE_SIZE (TREE_TYPE (prev_saved)))
+ ? !simple_cst_equal (TYPE_SIZE (type), TYPE_SIZE (prev_type))
  : !integer_zerop (DECL_SIZE (field)) ))
{
  /* Never smaller than a byte for compatibility.  */


-- 


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



[Bug ada/28171] ACATS: cd5003h intermitent fail

2006-06-26 Thread laurent at guerby dot net


--- Comment #1 from laurent at guerby dot net  2006-06-26 23:28 ---
Yep, that's what I got on Linux on various tests from time to time. No other
explanation than process/file OS races.

Do you run make check on a SMP box?


-- 

laurent at guerby dot net changed:

   What|Removed |Added

Summary|FAIL:   cd5003h |ACATS: cd5003h intermitent
   ||fail


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



[Bug tree-optimization/26797] [4.2 Regression] ACATS c35507m cd2a23e cxh1001 fail

2006-06-26 Thread laurent at guerby dot net


--- Comment #19 from laurent at guerby dot net  2006-06-26 23:33 ---
Richard Kenner:
> > Looks like the same bug that Gigi doesn't currently use VIEW_CONVERT_EXPR
> > for this type of Unchecked_Conversion.  So already on my plate.

Was a patch written for that at AdaCore?


-- 


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



[Bug middle-end/28161] Wrong bit field layout with -mms-bitfields

2006-06-26 Thread seongbae dot park at gmail dot com


--- Comment #4 from seongbae dot park at gmail dot com  2006-06-26 23:41 
---
You're correct -I've overlooked the type mismatch. 
One question though is the local variable "type" of place_field() is 
TREE_TYPE (field), not DECL_BIT_FIELD_TYPE (field).
I'm not familiar with gcc type system to know which is correct
but it doesn't look consistent as it is.


-- 


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



[Bug ada/28171] ACATS: cd5003h intermitent fail

2006-06-26 Thread dave at hiauly1 dot hia dot nrc dot ca


--- Comment #2 from dave at hiauly1 dot hia dot nrc dot ca  2006-06-26 
23:45 ---
Subject: Re:  ACATS: cd5003h intermitent fail

> --- Comment #1 from laurent at guerby dot net  2006-06-26 23:28 ---
> Yep, that's what I got on Linux on various tests from time to time. No other
> explanation than process/file OS races.
> 
> Do you run make check on a SMP box?

Yes, this was on a SMP box.

Dave


-- 


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



[Bug libgcj/28175] New: libgcj install tree should be relocatable

2006-06-26 Thread fitzsim at redhat dot com
Ideally, libgcj's install tree would be relocatable.  Currently though, there
are places where we hard-code full paths, such as the -rpath values in gij.  It
would be nice if someone went through all such references and turned them into
relative paths.  On Linux-based systems one could use /proc/self/exe to look up
the bin prefix.  Other platforms would require their own tricks.


-- 
   Summary: libgcj install tree should be relocatable
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libgcj
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: fitzsim at redhat dot com


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



[Bug middle-end/28161] Wrong bit field layout with -mms-bitfields

2006-06-26 Thread kkojima at gcc dot gnu dot org


--- Comment #5 from kkojima at gcc dot gnu dot org  2006-06-27 00:28 ---
Although I'm also not familiar with these materials, when
place_field is called for a.d, gdb says that

(gdb) call debug_tree (field)
 
unit size 
align 64 symtab 0 alias set -1 precision 64 min  max >
external nonlocal bit-field nonaddressable decl_3 decl_4 VOID file tiny.cc
line 3
size 
constant invariant 23>
user align 64 offset_align 1 context  attributes
 chain >

but when it's called for a.e

(gdb) call debug_tree (rli->prev_field)
 
unit size 
align 32 symtab 0 alias set -1 precision 23 min  max >
external nonlocal bit-field nonaddressable decl_3 decl_4 DI file tiny.cc
line 3
size 
constant invariant 23>
unit size  constant invariant 3>
user align 64 offset_align 128
offset 
constant invariant 0>
bit offset  constant invariant 0>
bit_field_type 
unit size 
align 64 symtab 0 alias set -1 precision 64 min  max > context
 attributes  chain >

i.e. DECL_BIT_FIELD_TYPE is added in processing.  I guess that
this is the reason for the use of TREE_TYPE (field) for not yet
processed fields and non ms-bitfield case.  gcc allocates 32-bit
for a.d without -mms-bitfield.  OTOH, ms-bitfield code see
the previous and already processed field and should allocate
64-bit for a.d.


-- 


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



[Bug target/28170] [4.1/4.2 Regression] Wrong result after swap byte in one word when compiled in 64-bit mode

2006-06-26 Thread dje at gcc dot gnu dot org


--- Comment #6 from dje at gcc dot gnu dot org  2006-06-27 01:34 ---
rs6000.c:insvdi_rshift_rlwimi_p() is wrong, specifically the lines checking the
shift count.


-- 


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



[Bug target/28170] [4.1/4.2 Regression] Wrong result after swap byte in one word when compiled in 64-bit mode

2006-06-26 Thread dje at gcc dot gnu dot org


--- Comment #7 from dje at gcc dot gnu dot org  2006-06-27 01:40 ---
I think the correct test is something like

Index: rs6000.c
===
--- rs6000.c(revision 115003)
+++ rs6000.c(working copy)
@@ -9794,8 +9794,8 @@
   && INTVAL (startop) > 32
   && (INTVAL (sizeop) + INTVAL (startop) < 64)
   && (INTVAL (sizeop) + INTVAL (startop) > 33)
-  && (INTVAL (sizeop) + INTVAL (startop) + INTVAL (shiftop) < 96)
-  && (INTVAL (sizeop) + INTVAL (startop) + INTVAL (shiftop) >= 64)
+  && (INTVAL (sizeop) + INTVAL (startop) + INTVAL (shiftop) < 64)
+  && (INTVAL (sizeop) + INTVAL (startop) + INTVAL (shiftop) >=32)
   && (64 - (INTVAL (shiftop) & 63)) >= INTVAL (sizeop))
 return 1;


-- 


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



[Bug target/28170] [4.1/4.2 Regression] Wrong result after swap byte in one word when compiled in 64-bit mode

2006-06-26 Thread amodra at bigpond dot net dot au


--- Comment #8 from amodra at bigpond dot net dot au  2006-06-27 01:41 
---
I think insvdi_rshift_rlwimi_p is totally broken.  It should look something
like the following to match the capabilities of rlwimi according to my reading
of the powerpc architecture specification.

/* Return 1 if operands will generate valid arguments to the rlwimi
   instruction for insert with right shift in 64-bit mode.  */

int
insvdi_rshift_rlwimi_p (rtx sizeop, rtx startop, rtx shiftop)
{
  /* The field that we insert into must start in the low word.  */
  if (INTVAL (startop) < 32 || INTVAL (startop) >= 64)
return 0;

  /* And it must end there too.  */
  if (INTVAL (sizeop) < 0 || INTVAL (sizeop) + INTVAL (startop) >= 64)
return 0;

  /* The value we are inserting must also come from the low word.
 Since the sign bit isn't in the low word, we don't need to worry
 about ashiftrt vs. lshiftrt.  */
  if (INTVAL (shiftop) + INTVAL (sizeop) >= 32)
return 0;

  return 1;
}


-- 


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



[Bug fortran/28176] New: FAIL: gfortran.dg/actual_array_constructor_1.f90 -O0 (ICE)

2006-06-26 Thread danglin at gcc dot gnu dot org
Executing on host: /mnt/gnu/gcc/objdir/gcc/testsuite/gfortran/../../gfortran
-B/
mnt/gnu/gcc/objdir/gcc/testsuite/gfortran/../../
/mnt/gnu/gcc/gcc/gcc/testsuite/
gfortran.dg/actual_array_constructor_1.f90   -O0   -pedantic-errors 
-L/mnt/gnu/
gcc/objdir/hppa64-hp-hpux11.00/./libgfortran/.libs
-L/mnt/gnu/gcc/objdir/hppa64-
hp-hpux11.00/./libgfortran/.libs
-L/mnt/gnu/gcc/objdir/hppa64-hp-hpux11.00/./lib
iberty  -lm   -o ./actual_array_constructor_1.exe(timeout = 300)
/mnt/gnu/gcc/gcc/gcc/testsuite/gfortran.dg/actual_array_constructor_1.f90: In
fu
nction 'redirect_':^M
/mnt/gnu/gcc/gcc/gcc/testsuite/gfortran.dg/actual_array_constructor_1.f90:21:
in
ternal compiler error: Segmentation fault^M
Please submit a full bug report,^M
with preprocessed source if appropriate.^M
See http://gcc.gnu.org/bugs.html> for instructions.^M
compiler exited with status 1
output is:
/mnt/gnu/gcc/gcc/gcc/testsuite/gfortran.dg/actual_array_constructor_1.f90: In
fu
nction 'redirect_':^M
/mnt/gnu/gcc/gcc/gcc/testsuite/gfortran.dg/actual_array_constructor_1.f90:21:
in
ternal compiler error: Segmentation fault^M
Please submit a full bug report,^M
with preprocessed source if appropriate.^M
See http://gcc.gnu.org/bugs.html> for instructions.^M
FAIL: gfortran.dg/actual_array_constructor_1.f90  -O0  (internal compiler
error)
FAIL: gfortran.dg/actual_array_constructor_1.f90  -O0  (test for excess errors)
Excess errors:
/mnt/gnu/gcc/gcc/gcc/testsuite/gfortran.dg/actual_array_constructor_1.f90:21:
in
ternal compiler error: Segmentation fault

WARNING: gfortran.dg/actual_array_constructor_1.f90  -O0  compilation failed to
produce executable

# /opt/gnu64/bin/gdb ../../f951
GNU gdb 6.4.50.20051209-cvs
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "hppa64-hp-hpux11.11"...
(gdb) r `cat xx.sh`
Starting program: /mnt/gnu/gcc/objdir/gcc/f951 `cat xx.sh`
Detaching after fork from child process 1902.
GNU F95 version 4.2.0 20060626 (experimental) (hppa64-hp-hpux11.00)
compiled by GNU C version 4.2.0 20060626 (experimental).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096

Program received signal SIGSEGV, Segmentation fault.
aggregate_value_p (exp=0x0, fntype=0x0) at ../../gcc/gcc/function.c:1750
1750  tree type = (TYPE_P (exp)) ? exp : TREE_TYPE (exp);
(gdb) bt
#0  aggregate_value_p (exp=0x0, fntype=0x0) at ../../gcc/gcc/function.c:1750
#1  0x40284214 in emit_library_call_value_1 (retval=0,
orgfun=0x83fffed5d8c0, value=0x0, fn_type=,
outmode=VOIDmode, nargs=, p=0x83fffeff2038)
at ../../gcc/gcc/calls.c:3312
#2  0x40284958 in emit_library_call_value (orgfun=0x0, value=0x8,
fn_type=2640219, outmode=CCmode, nargs=128) at ../../gcc/gcc/calls.c:3967
#3  0x403d60d0 in expand_binop (mode=TImode,
binoptab=, op0=0x83fffedd8be0,
op1=0x83fffedd8ba0, target=, unsignedp=0,
methods=) at ../../gcc/gcc/optabs.c:1888
#4  0x402f5768 in expand_mult (mode=TImode,
op0=, op1=0x83fffedd8ba0,
target=0x83fffedd8b80, unsignedp=1) at ../../gcc/gcc/expmed.c:3227
#5  0x40305d18 in expand_expr_real_1 (exp=,
target=0x83fffedd8b80, tmode=,
modifier=, alt_rtl=0x83fffeff1948)
at ../../gcc/gcc/expr.c:8145
#6  0x4030ebc0 in expand_expr_real (exp=0x83fffedf4288,
target=0x83fffedd8b80, tmode=TImode, modifier=EXPAND_NORMAL,
alt_rtl=0x83fffeff1948) at ../../gcc/gcc/expr.c:6690
#7  0x40315ae4 in store_expr (exp=0x83fffedf4288,
target=0x83fffedd8b80, call_param_p=0) at ../../gcc/gcc/expr.c:4370
---Type  to continue, or q  to quit---
#8  0x40300384 in expand_assignment (to=0x83fffedfbd10,
from=) at ../../gcc/gcc/expr.c:4249
#9  0x403061a4 in expand_expr_real_1 (exp=,
target=, tmode=,
modifier=, alt_rtl=0x0) at ../../gcc/gcc/expr.c:8587
#10 0x4030ea88 in expand_expr_real (exp=0x83fffedf4c18,
target=0x83fffed5a400, tmode=VOIDmode, modifier=EXPAND_NORMAL,
alt_rtl=0x0) at ../../gcc/gcc/expr.c:6684
#11 0x4044b584 in expand_expr_stmt (exp=0x0) at expr.h:493
#12 0x4049a5d8 in expand_gimple_basic_block (bb=0x83fffedfe258)
at ../../gcc/gcc/cfgexpand.c:1368
#13 0x4049bb4c in tree_expand_cfg () at ../../gcc/gcc/cfgexpand.c:1634
#14 0x40495394 in execute_one_pass (pass=0x80010001b728)
at ../../gcc/gcc/passes.c:864
#15 0x404956b0 in execute_pass_list (pass=0x80010001b728)
at ../../gcc/gcc/passes.c:911
#16 0x401e129c in tree_rest_of_compilation (fndecl=0x83fffedefe00)
at ../../gcc/gcc/tree-optimize.c:418
#17 0x40

[Bug target/28170] [4.1/4.2 Regression] Wrong result after swap byte in one word when compiled in 64-bit mode

2006-06-26 Thread amodra at bigpond dot net dot au


--- Comment #9 from amodra at bigpond dot net dot au  2006-06-27 01:47 
---
Uh, that should be "INTVAL (sizeop) <= 0".


-- 


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



[Bug fortran/28176] FAIL: gfortran.dg/actual_array_constructor_1.f90 -O0 (ICE)

2006-06-26 Thread danglin at gcc dot gnu dot org


--- Comment #1 from danglin at gcc dot gnu dot org  2006-06-27 01:53 ---
FAIL: gfortran.dg/actual_array_substr_1.f90  -O0  (internal compiler error)
FAIL: gfortran.dg/actual_array_substr_1.f90  -O0  (test for excess errors)
WARNING: gfortran.dg/actual_array_substr_1.f90  -O0  compilation failed to
produ
ce executable

fails in the some way.  I guessing but probably the following also
fail in the same way:

FAIL: gfortran.dg/auto_char_pointer_array_result_1.f90  -O0  (internal compiler
error)
FAIL: gfortran.dg/auto_char_pointer_array_result_1.f90  -O0  (test for excess
er
rors)
WARNING: gfortran.dg/auto_char_pointer_array_result_1.f90  -O0  compilation
fail
ed to produce executable
FAIL: gfortran.dg/auto_pointer_array_result_1.f90  -O0  (internal compiler
error
)
FAIL: gfortran.dg/auto_pointer_array_result_1.f90  -O0  (test for excess
errors)
WARNING: gfortran.dg/auto_pointer_array_result_1.f90  -O0  compilation failed
to
 produce executable
FAIL: gfortran.dg/character_array_constructor_1.f90  -O0  (internal compiler
err
or)
FAIL: gfortran.dg/character_array_constructor_1.f90  -O0  (test for excess
error
s)
WARNING: gfortran.dg/character_array_constructor_1.f90  -O0  compilation failed
to produce executable
FAIL: gfortran.dg/pr15324.f90  -O0  (internal compiler error)
FAIL: gfortran.dg/pr15324.f90  -O0  (test for excess errors)
WARNING: gfortran.dg/pr15324.f90  -O0  compilation failed to produce executable
FAIL: gfortran.dg/pr17612.f90  -O0  (internal compiler error)
FAIL: gfortran.dg/pr17612.f90  -O0  (test for excess errors)
WARNING: gfortran.dg/pr17612.f90  -O0  compilation failed to produce executable
FAIL: gfortran.fortran-torture/execute/pr19269-1.f90,  -O0  (internal compiler
e
rror)
FAIL: gfortran.fortran-torture/execute/strarray_3.f90,  -O0  (internal compiler
error)
FAIL: gfortran.fortran-torture/execute/strarray_4.f90,  -O0  (internal compiler
error)

These fails are related to the libgomp fails noted in PR fortran/27885.


-- 


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



[Bug libstdc++/26211] [DR 342] basic_istream::tellg, seekg are unformatted input functions

2006-06-26 Thread pinskia at gcc dot gnu dot org


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|4.2.0   |---


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



[Bug other/28177] New: [meta-bug] GCC 4.3 pending patches

2006-06-26 Thread pinskia at gcc dot gnu dot org
This metabug is used to track all the patches which have been written during 
Stage 3 of GCC 4.2 but do not qualify for that stage, and are waiting for Stage 
1 of GCC 4.3 to be applied.

Please, do not attacch the patches to this bug. Open a new bug report, and mark 
it as "blocking" this metabug (this metabug will "depend" on the new bug 
report).


-- 
   Summary: [meta-bug] GCC 4.3 pending patches
   Product: gcc
   Version: 4.2.0
Status: UNCONFIRMED
  Keywords: meta-bug
  Severity: enhancement
  Priority: P3
 Component: other
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
 BugsThisDependsOn: 24429


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



[Bug other/28177] [meta-bug] GCC 4.3 pending patches

2006-06-26 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2006-06-27 02:47 ---
I know there are some C inlining changes and dwarf2/3 speeds up waiting for
stage1.


-- 


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



[Bug other/23111] [meta-bug] GCC 4.2 pending patches

2006-06-26 Thread pinskia at gcc dot gnu dot org


--- Comment #4 from pinskia at gcc dot gnu dot org  2006-06-27 02:48 ---
We are now in stage3 which means all of the features have been applied so this
can be closed.  I filed a 4.3 meta-bug as PR 28177.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug other/28177] [meta-bug] GCC 4.3 pending patches

2006-06-26 Thread pinskia at gcc dot gnu dot org


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|--- |4.3.0


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



[Bug other/28177] [meta-bug] GCC 4.3 pending patches

2006-06-26 Thread pinskia at gcc dot gnu dot org


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-06-27 02:50:35
   date||


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



[Bug gcov/profile/23334] FIXME in coverage.c: use build_constructor directly

2006-06-26 Thread pinskia at gcc dot gnu dot org


--- Comment #2 from pinskia at gcc dot gnu dot org  2006-06-27 02:51 ---
This has been fixed on the LTO branch by Kazu and IIRC they are preapproved for
stage1 of 4.3 so marking this as blocking PR 28177, the meta-bug for 4.3
patches.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||kazu at gcc dot gnu dot org
OtherBugsDependingO||28177
  nThis||


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



[Bug target/27883] [4.2 regression] in schedule_insns, at sched-rgn.c:3038 on mips

2006-06-26 Thread wilson at gcc dot gnu dot org


--- Comment #4 from wilson at gcc dot gnu dot org  2006-06-27 03:02 ---
This only fails for --enable-checking builds, which is the default for
mainline, but not release branches.  I was able to reproduce this with gcc-4.0,
but not gcc-3.4.  The difference between the two is that gcc-4.0 has the
__builtin_copysign support, which emits the RTL that triggers the error.  The
error has probably been latent for a while.

The insn that causes the problem is
(jump_insn 99 98 113 15 (set (pc)
(if_then_else (ge:SI (subreg:SI (reg:DF 32 $f0) 4)
(const_int 0 [0x0]))
(label_ref 101)
(pc))) 261 {*branch_zerosi} (insn_list:REG_DEP_TRUE 94 (nil))
(expr_list:REG_DEAD (reg:SI 33 $f1)
(expr_list:REG_BR_PROB (const_int 5000 [0x1388])
(nil
On a 32-bit mips target, DFmode $f0 is a register pair $f0/$f1, so technically
this is correct.  There is a corresponding REG_UNUSED for $f0 on the insn that
sets (reg:DF 32 $f0).

However, flow doesn't track individual regs in subregs, it only tracks the
whole subreg.  Note that mark_used_reg ignores subregs.  So when we execute the
second life pass, we end up with
(jump_insn 98 97 112 17 (set (pc)
(if_then_else (ge (subreg:SI (reg:DF 32 $f0) 4)
(const_int 0 [0x0]))
(label_ref 100)
(pc))) 271 {*branch_ordersi} (insn_list:REG_DEP_TRUE 93 (nil))
(expr_list:REG_DEAD (reg:DF 32 $f0)
(expr_list:REG_DEAD (reg:SI 33 $f1)
(expr_list:REG_BR_PROB (const_int 5000 [0x1388])
(nil)
Note that we now have two overlapping REG_DEAD notes plus an overlapping
REG_UNUSED note on a previous insn.  When sched runs, it deletes both REG_DEAD
notes, but only readds one, resulting in the abort for a REG_DEAD note
consistency problem.

A subreg of a hard register is normally not allowed, but it is created in this
case because CANNOT_CHANGE_CLASS_MODE is defined, and HARD_REGNO_MODE_OK says
that an SImode $f1 is not OK.  The result is that simplify_subreg doesn't
simplify this.  The other part is that register_operand says it is OK. 
Eventually, this gets fixed by reload.

Fixing combine to get this right looks complicated.  Combine has to know that
the register was used inside a subreg, and then figure out that the subreg
wasn't simplified because of CANNOT_CHANGE_CLASS_MODE, etc.

I think a simpler solution here is to note that the life2 pass would have
worked correctly if it deleted all prior REG_UNUSED/REG_DEAD notes before it
started.  Incidentally, the comments for the life2 pass say it was explicitly
added to fix REG_UNUSED/REG_DEAD problems with distribute_notes in combine, so
it was apparently added to fix a related problem.  It just isn't working the
way it was originally intended.

It is curious that life2 is running immediately before sched, instead of
immediately after combine.  If we ran it immediately after combine, we could
get rid of the REG_DEAD/REG_UNUSED support in distribute_notes, which is
probably the most complicated, and most buggy, part of combine.  This would
also speed up the compiler a little bit.


-- 

wilson at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||wilson at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-06-27 03:02:40
   date||


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



[Bug tree-optimization/26797] [4.2 Regression] ACATS c35507m cd2a23e cxh1001 fail

2006-06-26 Thread kenner at vlsi1 dot ultra dot nyu dot edu


--- Comment #20 from kenner at vlsi1 dot ultra dot nyu dot edu  2006-06-27 
03:03 ---
Subject: Re:  [4.2 Regression] ACATS c35507m cd2a23e cxh1001 fail

> > > Looks like the same bug that Gigi doesn't currently use VIEW_CONVERT_EXPR
> > > for this type of Unchecked_Conversion.  So already on my plate.
> 
> Was a patch written for that at AdaCore?

Yes, but only on Friday and it hasn't been tested yet.


-- 


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



[Bug target/27883] [4.0/4.1/4.2 regression] in schedule_insns, at sched-rgn.c:3038 on mips

2006-06-26 Thread pinskia at gcc dot gnu dot org


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

   Keywords||ice-checking
  Known to fail||4.0.0 4.1.0 4.2.0
  Known to work||3.4.0
Summary|[4.2 regression] in |[4.0/4.1/4.2 regression] in
   |schedule_insns, at sched-   |schedule_insns, at sched-
   |rgn.c:3038 on mips  |rgn.c:3038 on mips
   Target Milestone|4.2.0   |4.1.2


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



[Bug java/28153] Under Windows Xp the generated JNI headers need to have a '_' prepended for each function.

2006-06-26 Thread tromey at gcc dot gnu dot org


--- Comment #5 from tromey at gcc dot gnu dot org  2006-06-27 03:20 ---
Yeah, jni.cc handles the lookup side of things.

The declaration side of things in user JNI code should be
handled by jni_md.h.  It has a bunch of win32-specific code
which boils down to:

#define JNIIMPORT__declspec(dllimport)
#define JNIEXPORT__declspec(dllexport)

#define JNICALL  __stdcall

It might be handy to see a small preprocessed source file.
Perhaps you're picking up the wrong jni.h, jni_md.h, or
perhaps the logic in jni_md.h is broken somehow.

Oops, I just looked at your version... jni_md.h is not in
3.4.  In 3.4 the same logic appears, only it is in jni.h.

It is possible that we fixed some bugs in this area since 3.4.
I don't remember.


-- 


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



[Bug c++/28169] Tertiary operator: object creation and initialization

2006-06-26 Thread joseph dot rajesh at gmail dot com


--- Comment #3 from joseph dot rajesh at gmail dot com  2006-06-27 04:09 
---
No I haven't missed the copy constructor... I checked the working with copy
constructor also... 
I know g++ is doing a conversion and making a copy of type "Base" (Using Base
copy constructor)... that's why the final object is of type "Base" and the
temporary "Derived" class object is thus deleted... And the standard says that
a copy should not be made instead of it should refer the original object.

Because finaly I should get a Base class reference to the derived class object,
which is not happening in g++...


-- 

joseph dot rajesh at gmail dot com changed:

   What|Removed |Added

 CC||joseph dot rajesh at gmail
   ||dot com


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



[Bug target/27827] gcc 4 produces worse x87 code on all platforms than gcc 3

2006-06-26 Thread uros at kss-loka dot si


--- Comment #22 from uros at kss-loka dot si  2006-06-27 05:49 ---
(In reply to comment #21)

> Note that you are running the opposite of my test case: SSE vs SSE rather than
> x87 vs x87.  This whole bug report is about x87 performance.  You can get more
> detail on why I want x87 in my messages above, particularly comment #11, but
> single precision is indeed the place where SSE cannot compete with the x87
> unit.  To see it, put the flags back the way I had them in the attachment, and
> you'll see that gcc 3 is much faster.  Also, you should find in single

Hm, these are x87 results:

/usr/local.uros/gcc34/bin/gcc -DREPS=1000 -fomit-frame-pointer -O -DTYPE=float
-c mmbench.c
/usr/local.uros/gcc34/bin/gcc -DREPS=1000 -fomit-frame-pointer -O -c
sgemm_atlas.c
/usr/local.uros/gcc34/bin/gcc -DREPS=1000 -fomit-frame-pointer -O -o xsmm_gcc
mmbench.o sgemm_atlas.o
rm -f *.o
/usr/local.uros/bin/gcc -DREPS=1000 -fomit-frame-pointer -O -DTYPE=float -c
mmbench.c
/usr/local.uros/bin/gcc -DREPS=1000 -fomit-frame-pointer -O -c sgemm_atlas.c
/usr/local.uros/bin/gcc -DREPS=1000 -fomit-frame-pointer -O -o xsmm_gc4
mmbench.o sgemm_atlas.o
rm -f *.o
echo "GCC 3.x single performance:"
GCC 3.x single performance:
./xsmm_gcc
ALGORITHM NB   REPSTIME  MFLOPS
=  =  =  ==  ==

atlasmm   60   1000   0.141 3072.00

echo "GCC 4.x single performance:"
GCC 4.x single performance:
./xsmm_gc4
ALGORITHM NB   REPSTIME  MFLOPS
=  =  =  ==  ==

atlasmm   60   1000   0.143 3029.92


-- 


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



[Bug middle-end/24929] long long shift/mask operations should be better optimized

2006-06-26 Thread ian at airs dot com


--- Comment #4 from ian at airs dot com  2006-06-27 06:05 ---
With my current version of the lower-subreg patch, I get this with -O2
-momit-leaf-frame-pointer:

f:
movl16(%esp), %eax
movl4(%esp), %ecx
movl8(%esp), %edx
shrl$16, %eax
andl$255, %eax
shldl   $8, %ecx, %edx
sall$8, %ecx
orl %ecx, %eax
ret

which may be optimal.


-- 


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