[Bug c++/17972] [3.4 Regression] const/pure functions result in bad asm

2005-03-10 Thread ebotcazou at gcc dot gnu dot org

--- Additional Comments From ebotcazou at gcc dot gnu dot org  2005-03-10 
08:04 ---
New patch at http://gcc.gnu.org/ml/gcc-patches/2005-03/msg00864.html


-- 


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


[Bug c++/20401] New: error message is misleading

2005-03-10 Thread papadopo at shfj dot cea dot fr
The error message in this case is misleading:

$ cat foo.cc
#include 

namespace foo {
typedef long long offset_t;
}

using namespace std;
using namespace foo;

int main() {
offset_t fpos;
}
$ 
$ g++ -c foo.cc
foo.cc: In function `int main()':
foo.cc:11: error: `offset_t' undeclared (first use this function)
foo.cc:11: error: (Each undeclared identifier is reported only once for each
   function it appears in.)
foo.cc:11: error: parse error before `;' token
$ 

Actually 'offset_t' is declared twice, once in the global namespace in Solaris'
 and once in the foo namespace.

-- 
   Summary: error message is misleading
   Product: gcc
   Version: 3.4.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: papadopo at shfj dot cea dot fr
CC: gcc-bugs at gcc dot gnu dot org
  GCC host triplet: sparc-sun-solaris2.8


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


[Bug c++/20401] error message is misleading

2005-03-10 Thread papadopo at shfj dot cea dot fr

--- Additional Comments From papadopo at shfj dot cea dot fr  2005-03-10 
09:48 ---
Created an attachment (id=8371)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8371&action=view)
test case


-- 


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


[Bug c++/20401] error message is misleading

2005-03-10 Thread papadopo at shfj dot cea dot fr

--- Additional Comments From papadopo at shfj dot cea dot fr  2005-03-10 
09:49 ---
Created an attachment (id=8372)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8372&action=view)
stripped down test case


-- 
   What|Removed |Added

Attachment #8371 is|0   |1
   obsolete||


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


[Bug java/20338] Program compiled with gcj crashes when accessing private static method from nested class

2005-03-10 Thread rmathew at gcc dot gnu dot org

--- Additional Comments From rmathew at gcc dot gnu dot org  2005-03-10 
11:00 ---
While the main problem reported by the filer has now been fixed on
mainline, I think we should not close this PR just yet - not until
we check in a testcase for our testsuite for this, which is not 
possible till PR19870 is fixed.

Otherwise, we can close this one and add a note to PR19870
to remember to add in the testcase for this PR when that is
fixed.

-- 
   What|Removed |Added

  BugsThisDependsOn||19870
 Status|NEW |SUSPENDED


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


[Bug target/18668] use prescott's fisttp

2005-03-10 Thread uros at kss-loka dot si

--- Additional Comments From uros at kss-loka dot si  2005-03-10 11:01 
---
Patch here:
http://gcc.gnu.org/ml/gcc-patches/2005-03/msg01009.html

-- 
   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |uros at kss-loka dot si
   |dot org |
 Status|NEW |ASSIGNED
   Last reconfirmed|2004-11-29 14:27:29 |2005-03-10 11:01:41
   date||


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


[Bug java/20338] Program compiled with gcj crashes when accessing private static method from nested class

2005-03-10 Thread mckinlay at redhat dot com

--- Additional Comments From mckinlay at redhat dot com  2005-03-10 11:30 
---
Why not check in the test case and XFAIL it? 

-- 


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


[Bug target/20126] [3.3/3.4/4.0/4.1 Regression] Inlined memcmp makes one argument null on entry

2005-03-10 Thread aoliva at redhat dot com

--- Additional Comments From aoliva at gcc dot gnu dot org  2005-03-10 
11:44 ---
Subject: Re: [PR target/20126, RFC] loop DEST_ADDR biv replacement may fail

On Mar  9, 2005, Jakub Jelinek <[EMAIL PROTECTED]> wrote:

> On Wed, Mar 09, 2005 at 01:02:08AM -0300, Alexandre Oliva wrote:
>> On Mar  8, 2005, Jakub Jelinek <[EMAIL PROTECTED]> wrote:
>> 
>> > Unfortunately, it seems to break ada bootstrap on at least x86-64 and i386:
>> 
>> Odd...  It surely completed bootstrap for me with default build flags.

> Your code hits just once on ali.adb

Rats, I didn't realize I needed --enable-languages=all,ada to pick
that up.  Fixed now.

> Note that recog_memoized (v->insn) is -1 even without the change,
> not sure what would fix that up.

Problem is that the insn has a volatile memory access, and loop runs
with volatile_ok = 0.

I'm not entirely sure why that is; presumably to avoid introducing or
removing volatile memory accesses.  I can see how this prevents
introducing them, but it appears to me that it still can remove them.

Anyhow, I've come up with a solution for this.  This patch introduces
a new function that is like validate_change, but if validate_change
fails and the original insn fails to be recognized with !volatile_ok
but passes with volatile_ok, then try the change and recog with
volatile_ok.

> But it certainly shows that *v->location doesn't have to be
> a simple pseudo, so gen_move_insn might not work.

Indeed.  I've introduced a new pseudo to hold the computed value now,
for the case in which *v->location isn't a reg.


Passed bootstrap and regtest on x86_64-linux-gnu on mainline, as well
as bootstrap on gcc-4_0-rhl-branch, both with Ada enabled.  Ok to
install?

Index: gcc/ChangeLog
from  Alexandre Oliva  <[EMAIL PROTECTED]>

PR target/20126
* loop.c (loop_givs_rescan): If replacement of DEST_ADDR failed,
set the original address pseudo to the correct value before the
original insn, if possible, and leave the insn alone, otherwise
create a new pseudo, set it and replace it in the insn.
* recog.c (validate_change_maybe_volatile): New.
* recog.h (validate_change_maybe_volatile): Declare.

Index: gcc/loop.c
===
RCS file: /cvs/gcc/gcc/gcc/loop.c,v
retrieving revision 1.522
diff -u -p -r1.522 loop.c
--- gcc/loop.c 17 Jan 2005 08:46:15 - 1.522
+++ gcc/loop.c 10 Mar 2005 11:23:59 -
@@ -5470,9 +5470,31 @@ loop_givs_rescan (struct loop *loop, str
mark_reg_pointer (v->new_reg, 0);
 
   if (v->giv_type == DEST_ADDR)
-   /* Store reduced reg as the address in the memref where we found
-  this giv.  */
-   validate_change (v->insn, v->location, v->new_reg, 0);
+   {
+ /* Store reduced reg as the address in the memref where we found
+this giv.  */
+ if (validate_change_maybe_volatile (v->insn, v->location,
+ v->new_reg))
+   /* Yay, it worked!  */;
+ /* Not replaceable; emit an insn to set the original
+giv reg from the reduced giv.  */
+ else if (REG_P (*v->location))
+   loop_insn_emit_before (loop, 0, v->insn,
+  gen_move_insn (*v->location,
+ v->new_reg));
+ else
+   {
+ /* If it wasn't a reg, create a pseudo and use that.  */
+ rtx reg, seq;
+ start_sequence ();
+ reg = force_reg (v->mode, *v->location);
+ seq = get_insns ();
+ end_sequence ();
+ loop_insn_emit_before (loop, 0, v->insn, seq);
+ gcc_assert (validate_change_maybe_volatile (v->insn, v->location,
+ reg));
+   }
+   }
   else if (v->replaceable)
{
  reg_map[REGNO (v->dest_reg)] = v->new_reg;
Index: gcc/recog.c
===
RCS file: /cvs/gcc/gcc/gcc/recog.c,v
retrieving revision 1.221
diff -u -p -r1.221 recog.c
--- gcc/recog.c 7 Mar 2005 13:52:08 - 1.221
+++ gcc/recog.c 10 Mar 2005 11:24:01 -
@@ -235,6 +235,34 @@ validate_change (rtx object, rtx *loc, r
 return apply_change_group ();
 }
 
+/* Same as validate_change, but doesn't support groups, and it accepts
+   volatile mems if they're already present in the original insn.
+
+   ??? Should this should search new for new volatile MEMs and reject
+   them?  */
+
+int
+validate_change_maybe_volatile (rtx object, rtx *loc, rtx new)
+{
+  int result;
+
+  if (validate_change (object, loc, new, 0))
+return 1;
+
+  if (volatile_ok || ! insn_invalid_p (object))
+return 0;
+
+  volatile_ok = 1;
+
+  gcc_assert (! insn_invalid_p (object));
+
+  result = validate_change (object, loc, new, 0);
+
+  volatile_ok = 0;
+
+  return result;
+}
+
 /* This subroutine of apply_cha

[Bug java/20338] Program compiled with gcj crashes when accessing private static method from nested class

2005-03-10 Thread rmathew at gcc dot gnu dot org

--- Additional Comments From rmathew at gcc dot gnu dot org  2005-03-10 
12:00 ---
(In reply to comment #7)
> Why not check in the test case and XFAIL it? 

I feel dumb for not having thought of it myself...

I am closing this bug and will submit the testcase as
a separate patch. Thanks.

-- 
   What|Removed |Added

  BugsThisDependsOn|19870   |
 Status|SUSPENDED   |RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.1.0


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


GCC segmentation fault

2005-03-10 Thread Rusev
Hello!
I am NOT sure that we discovered problem the first... but this makes 
GCC3.0.4-2 dump core 100%

Host ARCH i386 target ARCH i386
std::string str;
make_pair("string",(str.length() == 0?throw "string":str));
/usr/include/g++-v3/bits/stl_pair.h:222: Internal error: Segmentation fault

Regards,
   
Alexandre.


[Bug c/20402] New: gcc.dg/noncompile/920923-1.c ICE

2005-03-10 Thread jan dot dvorak at kraxnet dot cz
I noticed that latest CVS (20050310) silently ICEs (reporting PASS) on testcase
gcc.dg/noncompile/920923-1.c. Reduced to:


struct *A a;


# gcc -v ./a.c
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc/configure --enable-languages=c,c++
--enable-threads=posix --enable-share
Thread model: posix
gcc version 4.1.0 20050310 (experimental)
 /usr/local/libexec/gcc/i686-pc-linux-gnu/4.1.0/cc1 -quiet -v ./a.c -quiet
-dumpbase a.c -mtune=pentiumpro -auxbase a -version -o /tmp/ccFGmSSx.s
ignoring nonexistent directory "NONE/include"
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/include
 
/usr/local/lib/gcc/i686-pc-linux-gnu/4.1.0/../../../../i686-pc-linux-gnu/include
End of search list.
GNU C version 4.1.0 20050310 (experimental) (i686-pc-linux-gnu)
compiled by GNU C version 4.1.0 20050310 (experimental).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
./a.c:1: error: expected '{' before '*' token
./a.c:1: 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.

-- 
   Summary: gcc.dg/noncompile/920923-1.c ICE
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jan dot dvorak at kraxnet dot cz
CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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


[Bug rtl-optimization/15242] [3.3/3.4 regression] pessimization of "goto *"

2005-03-10 Thread steven at gcc dot gnu dot org

--- Additional Comments From steven at gcc dot gnu dot org  2005-03-10 
12:48 ---
> Maybe there should be another combining pass after the duplication
> of the indirect jumps.  Should I create another PR for this?

There should not be another "combining" pass (you really mean constant
propagation).  This new unfactoring stuff runs after register allocation,
so such a pass would not really help, except maybe to make the code look
prettier to you.

But, is this:

mov0xfffc(%ebx),%eax
jmp*%eax

slower than this:

jmp*0xfffc(%ebx)

or have you not tried that (e.g. by hacking the assembly by hand)?


-- 


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


[Bug target/20400] C++ std::queue conflicts with C header 'struct queue'

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
12:59 ---
This is why standard C++ classes are in namespaces.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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


[Bug c/20402] [4.1 Regression] gcc.dg/noncompile/920923-1.c ICE

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
13:06 ---
Confirmed, caused by the new parser.

-- 
   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org, jsm28 at gcc dot gnu
   ||dot org
 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Keywords||error-recovery, ice-on-
   ||invalid-code
   Last reconfirmed|-00-00 00:00:00 |2005-03-10 13:06:22
   date||
Summary|gcc.dg/noncompile/920923-1.c|[4.1 Regression]
   |ICE |gcc.dg/noncompile/920923-1.c
   ||ICE
   Target Milestone|--- |4.1.0
Version|unknown |4.1.0


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


[Bug debug/20403] New: dwarf2: DW_MACINFO_define - wrong lineno fields for predefined macros

2005-03-10 Thread niva at niisi dot msk dot ru
* the options given when GCC was configured/built;

Configured with: 
/home/niva/svnwork/gccvendorcurrent/configure
--with-headers=/home/niva/oc2000/mips/src/include
 --without-libs --enable-generated-files-in-srcdir --enable-threads=posix
-with-dwarf2 
 --disable-shared --target=mips64-none-elf --verbose --enable-languages=c 
 --srcdir=/home/niva/svnwork/gccvendorcurrent --prefix=/home/niva/local 
--enable-cpp

 * the complete command line that triggers the bug;

mips64-none-elf-gcc -v -g3 -c -o macros.o macros.c -DMYMACRO="123456" -UTTT
-save-temps
mips64-none-elf-readelf --debug-dump=macro macros.o

 * the compiler output (error messages, warnings, etc.);

No error messages

 * There are wrong line numbers in the DW_MACINFO_define and 
   DW_MACINFO_undef directives for pre(defined/undefined) macros. 

   According to the document "DWARF Debugging Information Format", 
   Version 3 November 12, 2003 (Draft 9), see
   6.3.3 Macinfo entries for Command Line Options, 

   "All such DW_MACINFO_define and DW_MACINFO_undef entries
   representing compilation options ... should encode the value 0 as 
   their line number operand."
   
   But readelf reports the lineno values 1, 2, 3, ... , etc.
   for the   and  DW_MACINFO_define and
   DW_MACINFO_undef entries.


 * the  preprocessed  file (*macro.i*)

# 1 "macros.c"
# 1 "/home/niva/tests/from_kost/debug1//"
# 1 ""
#define __STDC_HOSTED__ 1
#define __GNUC__ 3
#define __GNUC_MINOR__ 4
#define __GNUC_PATCHLEVEL__ 3
#define __SIZE_TYPE__ unsigned int
#define __PTRDIFF_TYPE__ int
#define __WCHAR_TYPE__ int
#define __WINT_TYPE__ unsigned int
#define __GXX_ABI_VERSION 1002
#define __SCHAR_MAX__ 127
#define __SHRT_MAX__ 32767
#define __INT_MAX__ 2147483647
#define __LONG_MAX__ 2147483647L
#define __LONG_LONG_MAX__ 9223372036854775807LL
#define __WCHAR_MAX__ 2147483647
#define __CHAR_BIT__ 8
#define __FLT_EVAL_METHOD__ 0
#define __FLT_RADIX__ 2
#define __FLT_MANT_DIG__ 24
#define __FLT_DIG__ 6
#define __FLT_MIN_EXP__ (-125)
#define __FLT_MIN_10_EXP__ (-37)
#define __FLT_MAX_EXP__ 128
#define __FLT_MAX_10_EXP__ 38
#define __FLT_MAX__ 3.40282347e+38F
#define __FLT_MIN__ 1.17549435e-38F
#define __FLT_EPSILON__ 1.19209290e-7F
#define __FLT_DENORM_MIN__ 1.40129846e-45F
#define __FLT_HAS_INFINITY__ 1
#define __FLT_HAS_QUIET_NAN__ 1
#define __DBL_MANT_DIG__ 53
#define __DBL_DIG__ 15
#define __DBL_MIN_EXP__ (-1021)
#define __DBL_MIN_10_EXP__ (-307)
#define __DBL_MAX_EXP__ 1024
#define __DBL_MAX_10_EXP__ 308
#define __DBL_MAX__ 1.7976931348623157e+308
#define __DBL_MIN__ 2.2250738585072014e-308
#define __DBL_EPSILON__ 2.2204460492503131e-16
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
#define __DBL_HAS_INFINITY__ 1
#define __DBL_HAS_QUIET_NAN__ 1
#define __LDBL_MANT_DIG__ 53
#define __LDBL_DIG__ 15
#define __LDBL_MIN_EXP__ (-1021)
#define __LDBL_MIN_10_EXP__ (-307)
#define __LDBL_MAX_EXP__ 1024
#define __LDBL_MAX_10_EXP__ 308
#define __DECIMAL_DIG__ 17
#define __LDBL_MAX__ 1.7976931348623157e+308L
#define __LDBL_MIN__ 2.2250738585072014e-308L
#define __LDBL_EPSILON__ 2.2204460492503131e-16L
#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
#define __LDBL_HAS_INFINITY__ 1
#define __LDBL_HAS_QUIET_NAN__ 1
#define __REGISTER_PREFIX__ 
#define __USER_LABEL_PREFIX__ 
#define __VERSION__ "3.4.3"
#define __NO_INLINE__ 1
#define __FINITE_MATH_ONLY__ 0

#define __mips__ 1
#define _mips 1
#define mips 1
#define __mips64 1
#define __R4000 1
#define __R4000__ 1
#define R4000 1
#define _R4000 1
#define __mips_fpr 64
#define _MIPS_ARCH_MIPS3 1
#define _MIPS_ARCH "mips3"
#define _MIPS_TUNE_MIPS3 1
#define _MIPS_TUNE "mips3"
#define __mips 3
#define _MIPS_ISA _MIPS_ISA_MIPS3
#define __mips_hard_float 1
#define __MIPSEB 1
#define __MIPSEB__ 1
#define MIPSEB 1
#define _MIPSEB 1
#define __LANGUAGE_C 1
#define __LANGUAGE_C__ 1
#define LANGUAGE_C 1
#define _LANGUAGE_C 1
# 1 ""
#define MYMACRO 123456
#undef TTT
# 1 "macros.c"
#define max(x,y) ((x) >= (y) ? (x) : (y))


#define min(x,y) ((x) <= (y) ? (x) : (y))


int main ()
{
  int i = 6, k = 7;
  return ((i) <= (k) ? (i) : (k)) + ((i) >= (k) ? (i) : (k));
}





* The output of "mips64-none-elf-readelf --debug-dump=macro macros.o":

  
 DW_MACINFO_define - lineno : 1 macro : __STDC_HOSTED__ 1
 DW_MACINFO_define - lineno : 2 macro : __GNUC__ 3
 DW_MACINFO_define - lineno : 3 macro : __GNUC_MINOR__ 4
 DW_MACINFO_define - lineno : 4 macro : __GNUC_PATCHLEVEL__ 3
 DW_MACINFO_define - lineno : 5 macro : __SIZE_TYPE__ unsigned int
 DW_MACINFO_define - lineno : 6 macro : __PTRDIFF_TYPE__ int
 DW_MACINFO_define - lineno : 7 macro : __WCHAR_TYPE__ int
 DW_MACINFO_define - lineno : 8 macro : __WINT_TYPE__ unsigned int
 DW_MACINFO_define - lineno : 9 macro : __GXX_ABI_VERSION 1002
 DW_MACINFO_define - lineno : 10 macro : __SCHAR_MAX__ 127
 DW_MACINFO_define - lineno : 11 macro : __SHRT_MAX__ 32767
 DW_MACINFO_define - lineno : 12 macro : __INT_MAX__ 2147483647
 DW_MACINFO_define - line

[Bug java/20394] Can't run db2 jdbc application compiled with gcj

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
13:10 ---
Closing as this is not our bug.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||WONTFIX


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


[Bug debug/20404] New: dwarf2: no DW_MACINFO_start_file for the "base" source file

2005-03-10 Thread niva at niisi dot msk dot ru
* the options given when GCC was configured/built;

Configured with: 
/home/niva/svnwork/gccvendorcurrent/configure
--with-headers=/home/niva/oc2000/mips/src/include
 --without-libs --enable-generated-files-in-srcdir --enable-threads=posix
-with-dwarf2 
 --disable-shared --target=mips64-none-elf --verbose --enable-languages=c 
 --srcdir=/home/niva/svnwork/gccvendorcurrent --prefix=/home/niva/local 
--enable-cpp

 * the complete command line that triggers the bug;

mips64-none-elf-gcc -v -g3 -c -o macros.o macros1.c -DMYMACRO="123456" -UTTT
mips64-none-elf-readelf --debug-dump=macro macros1.o

 * the compiler output (error messages, warnings, etc.);

No error messages

 * There is no DW_MACRO_start_file for the "base" source file
   submitted to the compiler for compilation.  

   According to the document "DWARF Debugging Information Format", 
   Version 3 November 12, 2003 (Draft 9), see
   6.3.2 Base Source Entries, 

   "In addition to producing a matched pair of DW_MACRO_start_file
   and DW_MACRO_end_file entries for each inclusion directive
   actually processed during compilation, A PRODUCER SHOULD GENERATE
   SUCH A MATCHED PAIR ALSO FOR THE "BASE" SOURCE FILE SUBMITTED TO 
   THE COMPILER FOR COMPILATION."  
   
   But readelf does not show a DW_MACRO_start_file for the "base"
   source file.

 * NOTE: gcc-3.2.2 GENERATED the DW_MACRO_start_file entry for the 
   "base" source file.

 * the  preprocessed  file (*.i*)

# 1 "macros1.c"
# 1 "/home/niva/tests/from_kost/debug1//"
# 1 ""
#define __STDC_HOSTED__ 1
#define __GNUC__ 3
#define __GNUC_MINOR__ 4
#define __GNUC_PATCHLEVEL__ 3
#define __SIZE_TYPE__ unsigned int
#define __PTRDIFF_TYPE__ int
#define __WCHAR_TYPE__ int
#define __WINT_TYPE__ unsigned int
#define __GXX_ABI_VERSION 1002
#define __SCHAR_MAX__ 127
#define __SHRT_MAX__ 32767
#define __INT_MAX__ 2147483647
#define __LONG_MAX__ 2147483647L
#define __LONG_LONG_MAX__ 9223372036854775807LL
#define __WCHAR_MAX__ 2147483647
#define __CHAR_BIT__ 8
#define __FLT_EVAL_METHOD__ 0
#define __FLT_RADIX__ 2
#define __FLT_MANT_DIG__ 24
#define __FLT_DIG__ 6
#define __FLT_MIN_EXP__ (-125)
#define __FLT_MIN_10_EXP__ (-37)
#define __FLT_MAX_EXP__ 128
#define __FLT_MAX_10_EXP__ 38
#define __FLT_MAX__ 3.40282347e+38F
#define __FLT_MIN__ 1.17549435e-38F
#define __FLT_EPSILON__ 1.19209290e-7F
#define __FLT_DENORM_MIN__ 1.40129846e-45F
#define __FLT_HAS_INFINITY__ 1
#define __FLT_HAS_QUIET_NAN__ 1
#define __DBL_MANT_DIG__ 53
#define __DBL_DIG__ 15
#define __DBL_MIN_EXP__ (-1021)
#define __DBL_MIN_10_EXP__ (-307)
#define __DBL_MAX_EXP__ 1024
#define __DBL_MAX_10_EXP__ 308
#define __DBL_MAX__ 1.7976931348623157e+308
#define __DBL_MIN__ 2.2250738585072014e-308
#define __DBL_EPSILON__ 2.2204460492503131e-16
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
#define __DBL_HAS_INFINITY__ 1
#define __DBL_HAS_QUIET_NAN__ 1
#define __LDBL_MANT_DIG__ 53
#define __LDBL_DIG__ 15
#define __LDBL_MIN_EXP__ (-1021)
#define __LDBL_MIN_10_EXP__ (-307)
#define __LDBL_MAX_EXP__ 1024
#define __LDBL_MAX_10_EXP__ 308
#define __DECIMAL_DIG__ 17
#define __LDBL_MAX__ 1.7976931348623157e+308L
#define __LDBL_MIN__ 2.2250738585072014e-308L
#define __LDBL_EPSILON__ 2.2204460492503131e-16L
#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
#define __LDBL_HAS_INFINITY__ 1
#define __LDBL_HAS_QUIET_NAN__ 1
#define __REGISTER_PREFIX__ 
#define __USER_LABEL_PREFIX__ 
#define __VERSION__ "3.4.3"
#define __NO_INLINE__ 1
#define __FINITE_MATH_ONLY__ 0

#define __mips__ 1
#define _mips 1
#define mips 1
#define __mips64 1
#define __R4000 1
#define __R4000__ 1
#define R4000 1
#define _R4000 1
#define __mips_fpr 64
#define _MIPS_ARCH_MIPS3 1
#define _MIPS_ARCH "mips3"
#define _MIPS_TUNE_MIPS3 1
#define _MIPS_TUNE "mips3"
#define __mips 3
#define _MIPS_ISA _MIPS_ISA_MIPS3
#define __mips_hard_float 1
#define __MIPSEB 1
#define __MIPSEB__ 1
#define MIPSEB 1
#define _MIPSEB 1
#define __LANGUAGE_C 1
#define __LANGUAGE_C__ 1
#define LANGUAGE_C 1
#define _LANGUAGE_C 1
# 1 ""
#define MYMACRO 123456
#undef TTT
# 1 "macros1.c"
# 1 "macros.c" 1
#define max(x,y) ((x) >= (y) ? (x) : (y))


#define min(x,y) ((x) <= (y) ? (x) : (y))


int main ()
{
  int i = 6, k = 7;
  return ((i) <= (k) ? (i) : (k)) + ((i) >= (k) ? (i) : (k));
}
# 2 "macros1.c" 2





* The output of "mips64-none-elf-readelf --debug-dump=macro macros1.o":

  Contents of the .debug_macinfo section:

 DW_MACINFO_define - lineno : 1 macro : __STDC_HOSTED__ 1
 DW_MACINFO_define - lineno : 2 macro : __GNUC__ 3
 DW_MACINFO_define - lineno : 3 macro : __GNUC_MINOR__ 4
 DW_MACINFO_define - lineno : 4 macro : __GNUC_PATCHLEVEL__ 3
 DW_MACINFO_define - lineno : 5 macro : __SIZE_TYPE__ unsigned int
 DW_MACINFO_define - lineno : 6 macro : __PTRDIFF_TYPE__ int
 DW_MACINFO_define - lineno : 7 macro : __WCHAR_TYPE__ int
 DW_MACINFO_define - lineno : 8 macro : __WINT_TYPE__ unsigned int
 DW_MACINFO_define - lineno : 9 macro : __GXX_ABI_V

[Bug debug/20403] dwarf-3: DW_MACINFO_define - wrong lineno fields for predefined macros

2005-03-10 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

   Keywords||wrong-debug
Summary|dwarf2: DW_MACINFO_define - |dwarf-3: DW_MACINFO_define -
   |wrong lineno fields for |wrong lineno fields for
   |predefined macros   |predefined macros


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


[Bug debug/20404] dwarf2: no DW_MACINFO_start_file for the "base" source file

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
13:17 ---


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

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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


[Bug debug/20253] [3.4 regression]: Macro debug info broken due to lexer change

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
13:18 ---
*** Bug 20404 has been marked as a duplicate of this bug. ***

-- 
   What|Removed |Added

 CC||niva at niisi dot msk dot ru


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


[Bug java/20312] No warning on bad method

2005-03-10 Thread rmathew at gcc dot gnu dot org

--- Additional Comments From rmathew at gcc dot gnu dot org  2005-03-10 
13:30 ---
A patch is here:

  http://gcc.gnu.org/ml/java-patches/2005-q1/msg00710.html

-- 
   What|Removed |Added

   Keywords||patch


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


[Bug middle-end/20225] [4.0/4.1 regression] ICE during GC

2005-03-10 Thread rth at gcc dot gnu dot org

--- Additional Comments From rth at gcc dot gnu dot org  2005-03-10 13:37 
---
The problem appears to be unrelated to the referenced patch.

Debugging shows that we have a node that has been removed from the cgraph_nodes
list.  Because the node is not on the cgraph_nodes list, the 
node->prev->next == node invariant does not hold, and so the code generated by 
the 
chain_next/chain_prev GTY annotations segfaults.

The node is still reachable from another node's next_needed, which seems like 
the
real bug.  Honza agreed to work on the problem on IRC.

The easiest way to show the problem is to manually add

  if (x != NULL && x != (void *)1 && x->previous == NULL && x != cgraph_nodes)
abort ();

to gt_ggc_mx_cgraph_node.

-- 
   What|Removed |Added

 AssignedTo|rth at gcc dot gnu dot org  |jh at suse dot cz


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


[Bug rtl-optimization/18628] [4.0/4.1 regression] miscompilation of switch statement in loop

2005-03-10 Thread rth at gcc dot gnu dot org

--- Additional Comments From rth at gcc dot gnu dot org  2005-03-10 13:46 
---
Subject: Re: [PR middle-end/18628] do not fold to label load from tablejump to 
reg

On Wed, Mar 09, 2005 at 07:26:37AM -0300, Alexandre Oliva wrote:
> + /* If it's not a REG, the REG_EQUAL note is inappropriate.  */
> + if (REG_P (SET_DEST (set)))
> +   set_unique_reg_note (insn, REG_EQUAL, label);

I don't think this is a good idea at all.  This is just
asking for reload to recreate a reference to the deleted label.


r~


-- 


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


[Bug rtl-optimization/20331] [3.4/4.0/4.1 Regression] Wrong code generation for the argument of the pure function in PIC

2005-03-10 Thread rth at gcc dot gnu dot org

--- Additional Comments From rth at gcc dot gnu dot org  2005-03-10 13:57 
---
I'll agree that modified_{in,between}_p need to check the address for changes,
since that controls the ultimate value that is accessed.

I do not agree that alias.c needs to check the address for changes.  In that
case we're trying to determine if assigning a value to one memory reference
can possibly change the value of another memory reference.  Which is false for
*all* read-only memory.

-- 


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


[Bug debug/20403] dwarf-3: DW_MACINFO_define - wrong lineno fields for predefined macros

2005-03-10 Thread dberlin at gcc dot gnu dot org

--- Additional Comments From dberlin at gcc dot gnu dot org  2005-03-10 
14:01 ---
This is technically correct.
In 4.0 we are still off by a  single line, we claim it to be line 1 when it
should be 0.
We also will output them after the main file starts (this is because of the
order of CPP processing).
However, this is an incredibly minor bug.

-- 


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


[Bug c++/20397] g++ rejects valid code with 'is inaccessible' error

2005-03-10 Thread matthew dot whitney at gmail dot com

--- Additional Comments From matthew dot whitney at gmail dot com  
2005-03-10 14:10 ---
Thanks for the explanation - I understand what's happening now. Next time I'll
take it to comp.lang.c++.moderated before bothering you guys. Anyway sorry to
have wasted your time.

-- 


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


[Bug c++/18384] [3.3/3.4/4.0/4.1 Regression] ICE on zero-length array with empty initializer...

2005-03-10 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-03-10 
14:18 ---
Subject: Bug 18384

CVSROOT:/cvs/gcc
Module name:gcc
Branch: gcc-4_0-branch
Changes by: [EMAIL PROTECTED]   2005-03-10 14:17:11

Modified files:
gcc/cp : ChangeLog 
gcc/testsuite  : ChangeLog 
gcc/cp : decl.c 
Added files:
gcc/testsuite/g++.dg/init: array19.C 

Log message:
PR c++/18384, c++/18327
* decl.c (reshape_init_array): Use UHWI type for max_index_cst
and index.  Convert max_index to size_type_node if it isn't
host_integerp (, 1).

* g++.dg/init/array19.C: New test.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.4648.2.8&r2=1.4648.2.9
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5084.2.31&r2=1.5084.2.32
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.1371.2.2&r2=1.1371.2.3
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/init/array19.C.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1



-- 


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


[Bug target/19684] avr-gcc 4.0 (and 3.3.4): wrong size in asm comment (peephole)

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
14:20 ---
Also note peepholes should really be changed to peephole2.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-03-10 14:20:10
   date||
Summary|avr-gcc 4.0 (and 3.3.4):|avr-gcc 4.0 (and 3.3.4):
   |wrong size in asm comment   |wrong size in asm comment
   ||(peephole)


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


[Bug c++/18384] [3.3/3.4/4.0/4.1 Regression] ICE on zero-length array with empty initializer...

2005-03-10 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-03-10 
14:20 ---
Subject: Bug 18384

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-03-10 14:19:51

Modified files:
gcc/cp : ChangeLog 
gcc/testsuite  : ChangeLog 
gcc/cp : decl.c 
Added files:
gcc/testsuite/g++.dg/init: array19.C 

Log message:
PR c++/18384, c++/18327
* decl.c (reshape_init_array): Use UHWI type for max_index_cst
and index.  Convert max_index to size_type_node if it isn't
host_integerp (, 1).

* g++.dg/init/array19.C: New test.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/ChangeLog.diff?cvsroot=gcc&r1=1.4658&r2=1.4659
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5136&r2=1.5137
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/cp/decl.c.diff?cvsroot=gcc&r1=1.1376&r2=1.1377
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/init/array19.C.diff?cvsroot=gcc&r1=1.1&r2=1.2



-- 


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


[Bug rtl-optimization/20242] Pessimizing effects of defining EXTRA_MEMORY_CONSTRAINT

2005-03-10 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-03-10 14:21:43
   date||


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


[Bug c++/18384] [3.3 Regression] ICE on zero-length array with empty initializer...

2005-03-10 Thread jakub at gcc dot gnu dot org

--- Additional Comments From jakub at gcc dot gnu dot org  2005-03-10 14:22 
---
Fixed for 3.4/4.0/4.1.

-- 
   What|Removed |Added

  Known to fail|4.0.0 3.4.3 |3.4.3
  Known to work|3.3 3.4.0   |3.3 3.4.0 3.4.4 4.0.0 4.1.0
Summary|[3.3/3.4/4.0/4.1 Regression]|[3.3 Regression] ICE on
   |ICE on zero-length array|zero-length array with empty
   |with empty initializer...   |initializer...
   Target Milestone|3.4.4   |3.3.6


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


[Bug fortran/20361] -fmax-stack-var-size=N not working for equivalence

2005-03-10 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

OtherBugsDependingO||20405
  nThis||


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


[Bug fortran/20405] New: [meta-bug] equivalenced variable problems

2005-03-10 Thread pinskia at gcc dot gnu dot org
There are currently two equivalenced variable problems but I suspect there are 
more which is why I am 
creating this meta-bug.

-- 
   Summary: [meta-bug] equivalenced variable problems
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Keywords: wrong-code
  Severity: minor
  Priority: P2
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
 BugsThisDependsOn: 18518,20361


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


[Bug fortran/20405] [meta-bug] equivalenced variable problems

2005-03-10 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-03-10 14:34:44
   date||


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


[Bug fortran/16511] Test 19990905-0.f fails with gfortran

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
14:38 ---
This is an equivalenced problem so linking to 20405

-- 


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


[Bug fortran/16511] Test 19990905-0.f fails with gfortran

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
14:39 ---
The way I came to that conclusion was the following code worked:
c { dg-do compile }
  subroutine sub(a)
  common /info/ m, n
  real a(m,n)
  a(1,1) = a(2,2)
  end

-- 


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


[Bug fortran/18518] equivalenced variables are not saved

2005-03-10 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

OtherBugsDependingO||20405
  nThis||


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


[Bug fortran/20406] New: SIZE() matters?

2005-03-10 Thread dave dot offiler at metoffice dot gov dot uk
Dear gfortran developers,

This is not a bug, but perhaps in the class of 'unexpected, but notincorrect,
behaviour'. This is just for your attention, but not (necessarily) for action as
I'm sure there are vastly more important things to deal with.

The issue is the return value from size() when the argument is an unassigned
pointer - gfortran returns 1. This is illustrated in the attached code snippet.

We feel that logically, size() should return zero in these cases (as the Intel
and NAG compilers do) or a negative value. However, we  accept that any
arbitrary value could be returned - as the result is probably undefined
according the standards. Not that it should be relied upon, or in a good
program, even allowed to occur!

The reason for not doing an allocate() and then doing the test with size() and
not associated() before deallocation has some history and a complex logic that I
won't bore you with here. Suffice to say we are now doing the test properly...

All the best,
Dave

On RH9 Linux:
[EMAIL PROTECTED]> gfc --version
GNU Fortran 95 (GCC 4.0.0 20050224 (experimental))
...
[EMAIL PROTECTED]> cat ~/packages/bugs/gfc_pointer_problem2.f90
[EMAIL PROTECTED]> gfc -static -o point gfc_pointer_problem2.f90
[EMAIL PROTECTED]> point
!!! x associated? F
!!! size of x?  1
!!!Fortran runtime error: Internal: Attempt to DEALLOCATE unallocated memory.
!!!
program point
  integer, pointer :: x(:) => null()

  print *, 'x associated?', associated(x)
  print *, 'size of x?   ', size(x)  !!! gfc says 1, ifc=nag=0

  if(size(x)>0)deallocate(x) !!! wrong!
!!!  if (associated(x)) deallocate(x)!!! correct

end program point

-- 
   Summary: SIZE() matters?
   Product: gcc
   Version: 4.0.0
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dave dot offiler at metoffice dot gov dot uk
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug libfortran/20406] SIZE() matters?

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
15:00 ---
This is a library problem.

-- 
   What|Removed |Added

   Severity|enhancement |minor
  Component|fortran |libfortran


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


[Bug target/20375] [4.0/4.1 Regression] C++ ICE in assign_parm_find_entry_rtl

2005-03-10 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-03-10 
15:04 ---
Subject: Bug 20375

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-03-10 15:04:39

Modified files:
gcc: ChangeLog function.c 
gcc/testsuite  : ChangeLog 
Added files:
gcc/testsuite/g++.dg/other: stdarg3.C 

Log message:
PR c++/20375
* function.c (struct assign_parm_data_one): Remove last_named
field.
(assign_parm_find_data_types): Don't determine last_named.
Reorder named_parm determination.
(assign_parms): Only setup varargs on the last non-varadic
parameter.
testsuite:
PR c++/20375
* g++.dg/other/stdarg3.C: New.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.7768&r2=2.7769
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/function.c.diff?cvsroot=gcc&r1=1.605&r2=1.606
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5137&r2=1.5138
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/other/stdarg3.C.diff?cvsroot=gcc&r1=NONE&r2=1.1



-- 


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


[Bug target/20375] [4.0/4.1 Regression] C++ ICE in assign_parm_find_entry_rtl

2005-03-10 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-03-10 
15:11 ---
Subject: Bug 20375

CVSROOT:/cvs/gcc
Module name:gcc
Branch: gcc-4_0-branch
Changes by: [EMAIL PROTECTED]   2005-03-10 15:11:25

Modified files:
gcc: ChangeLog function.c 
gcc/testsuite  : ChangeLog 
Added files:
gcc/testsuite/g++.dg/other: stdarg3.C 

Log message:
PR c++/20375
* function.c (struct assign_parm_data_one): Remove last_named
field.
(assign_parm_find_data_types): Don't determine last_named.
Reorder named_parm determination.
(assign_parms): Only setup varargs on the last non-varadic
parameter.
testsuite:
PR c++/20375
* g++.dg/other/stdarg3.C: New.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.36&r2=2.7592.2.37
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/function.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.604&r2=1.604.8.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5084.2.32&r2=1.5084.2.33
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/other/stdarg3.C.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1



-- 


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


[Bug c++/20381] [4.0/4.1 Regression] ICE in build_ptrmemfunc, at cp/typeck.c:5702

2005-03-10 Thread lerdsuwa at gcc dot gnu dot org

--- Additional Comments From lerdsuwa at gcc dot gnu dot org  2005-03-10 
15:11 ---
Patch submitted:
  http://gcc.gnu.org/ml/gcc-patches/2005-03/msg01028.html

-- 


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


[Bug c++/20407] New: Rejects valid C99 for the C++ front-end

2005-03-10 Thread pinskia at gcc dot gnu dot org
The following code is rejects (even though it is valid C99 and Mark said we 
should have the C++ front-
end accept it also):
typedef struct {
 unsigned char dir;
 int data[];
} AiDefaultRailBlock;
static const AiDefaultRailBlock _raildata_ai_0 = { 1,  { 0,  4 }  };

-- 
   Summary: Rejects valid C99 for the C++ front-end
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Keywords: rejects-valid
  Severity: minor
  Priority: P2
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pinskia at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug c++/18327] [3.3 Regression] ICE while compiling valid c code with g++

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
15:12 ---
The ICE has been fixed on the mainline, 3.4 and 4.0 branches but we still have 
a rejects valid, which I 
filed as PR 20407.

-- 
   What|Removed |Added

OtherBugsDependingO||20407
  nThis||
Summary|[3.3/3.4/4.0/4.1 Regression]|[3.3 Regression] ICE while
   |ICE while compiling valid c |compiling valid c code with
   |code with g++   |g++


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


[Bug c++/20407] Rejects valid C99 for the C++ front-end

2005-03-10 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

  BugsThisDependsOn||18327


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


[Bug middle-end/20225] [4.0/4.1 regression] ICE during GC

2005-03-10 Thread rth at gcc dot gnu dot org

--- Additional Comments From rth at gcc dot gnu dot org  2005-03-10 15:15 
---
Err, sorry, that "how to reproduce" snippet depended on some other changes
in my tree.  You'll have to check

  node->previous && node->previous->next != node.


-- 


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


[Bug target/20375] [4.0/4.1 Regression] C++ ICE in assign_parm_find_entry_rtl

2005-03-10 Thread nathan at gcc dot gnu dot org

--- Additional Comments From nathan at gcc dot gnu dot org  2005-03-10 
15:23 ---
2005-03-10  Nathan Sidwell  <[EMAIL PROTECTED]>

PR c++/20375
* function.c (struct assign_parm_data_one): Remove last_named
field.
(assign_parm_find_data_types): Don't determine last_named.
Reorder named_parm determination.
(assign_parms): Only setup varargs on the last non-varadic
parameter.

-- 
   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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


[Bug target/20375] [4.0/4.1 Regression] C++ ICE in assign_parm_find_entry_rtl

2005-03-10 Thread pinskia at gcc dot gnu dot org


-- 
   What|Removed |Added

   Target Milestone|4.1.0   |4.0.0


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


[Bug middle-end/20408] New: Unnessasary code generated for empty structs

2005-03-10 Thread chris at bubblescope dot net
Given an empty struct (ie struct X { };), even at high optimisation levels g++
will insist on always allocating and zeroing some memory for empty structs.

This actually effects C++ code, including libstdc++-v3, as empty structs are
often used as a means of passing around functions.

EXAMPLE
--
struct X {};

void foo(X);

void call_foo()
{ foo(X()); }
--

generates (from -O3, t70.final_cleanup is:)
-
;; Function void call_foo() (_Z8call_foov)

void call_foo() ()
{
  struct X D.1597;

:
  D.1597 = 0;
  foo (D.1597) [tail call];
  return;

}
-

-- 
   Summary: Unnessasary code generated for empty structs
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Severity: minor
  Priority: P2
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: chris at bubblescope dot net
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug c++/20408] Unnessasary code generated for empty structs

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
15:56 ---
Note this has no effect on the generated code.

But anyways:
  struct X D.1574;
  struct X D.1590;

  D.1574 = {};
  D.1590 = 0;

That is not right 0 is an INTEREGER_CST which cannot be an aggregate, that is 
just wrong.

If we had more type checking we would be an ICE.

-- 
   What|Removed |Added

   Severity|minor   |normal
 Status|UNCONFIRMED |NEW
  Component|middle-end  |c++
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-03-10 15:56:21
   date||


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


[Bug c++/20408] Unnecessary code generated for empty structs

2005-03-10 Thread chris at bubblescope dot net


-- 
   What|Removed |Added

   Severity|normal  |minor


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


[Bug c++/20407] Rejects valid C99 for the C++ front-end

2005-03-10 Thread joseph at codesourcery dot com

--- Additional Comments From joseph at codesourcery dot com  2005-03-10 
15:59 ---
Subject: Re:  New: Rejects valid C99 for the C++ front-end

On Thu, 10 Mar 2005, pinskia at gcc dot gnu dot org wrote:

> The following code is rejects (even though it is valid C99 and Mark said we 
> should have the C++ front-
> end accept it also):
> typedef struct {
>  unsigned char dir;
>  int data[];
> } AiDefaultRailBlock;
> static const AiDefaultRailBlock _raildata_ai_0 = { 1,  { 0,  4 }  };

Initialization of flexible array members is not valid C99; it is a GNU 
extension.



-- 


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


[Bug c++/20408] Unnecessary code generated for empty structs

2005-03-10 Thread chris at bubblescope dot net

--- Additional Comments From chris at bubblescope dot net  2005-03-10 16:00 
---
ignore my random changing of severity..

-- 
   What|Removed |Added

   Severity|minor   |normal


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


[Bug c++/20408] Unnecessary code generated for empty structs

2005-03-10 Thread chris at bubblescope dot net

--- Additional Comments From chris at bubblescope dot net  2005-03-10 16:05 
---
When you say "has no effect in final code", are you talking about the problem
you noticed, or the problem as a whole?

I find for each extra X I add to the type of foo I get a line much like:

movb %al, 28(%esp)

appearing in the assembler output, which I assume isn't necessary..

-- 


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


[Bug c++/20408] Unnecessary code generated for empty structs

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
16:10 ---
Werid on PPC, we get the most optimal code of
__Z8call_foov:
LFB2:
b __Z3foo1X

-- 
   What|Removed |Added

   Keywords||missed-optimization


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


[Bug target/20409] New: ICE in simplify_subreg with -fprofile-generate

2005-03-10 Thread jakub at gcc dot gnu dot org
/* { dg-do compile } */
/* { dg-options "-O2 -fprofile-generate" } */

struct S
{
  int a;
  void **b;
};

void
foo (struct S *x, int y)
{
  if (!x)
return;
  if (y >= x->a)
return;
  x->a--;
  for (; y < x->a; y++)
x->b[y] = x->b[y + 1];
  x->b[x->a] = (void *) 0;
}

ICEs on IA-64 during combine, but the bug is earlier.
CSE2 creates:
(insn 42 41 87 3 (set (reg/v:SI 344 [ y.8 ])
(reg:DI 378)) 4 {*movsi_internal} (nil)
(nil))
which is invalid because the modes don't match.
Before CSE2 there is:
(insn 100 99 101 0 (set (reg:DI 378)
(reg:DI 113 in1)) -1 (nil)
(nil))
...
(insn 103 102 104 0 (set (reg:DI 113 in1)
(reg:DI 378)) -1 (nil)
(nil))
...
(insn 12 11 13 0 (set (reg/v:SI 350 [ y ])
(reg:SI 113 in1 [ y ])) 4 {*movsi_internal} (nil)
(nil))
...
(insn 42 41 87 3 (set (reg/v:SI 344 [ y.8 ])
(reg/v:SI 350 [ y ])) 4 {*movsi_internal} (nil)
(nil))
where insns 100 and 103 and code around it are created by .bp pass.

-- 
   Summary: ICE in simplify_subreg with -fprofile-generate
   Product: gcc
   Version: 4.0.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code
  Severity: critical
  Priority: P2
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jakub at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: ia64-linux


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


[Bug c++/20408] Unnecessary code generated for empty structs

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
16:21 ---
(In reply to comment #5)
> Andrew, is Daniel Berlin struct aliasing work likely to help, here?

No, fixing the front-end so it no longer produces a = 0 will most likely fix 
this as that is just wrong.

-- 
   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org


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


[Bug target/20409] ICE in simplify_subreg with -fprofile-generate

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
16:24 ---
This is not a target bug but rather a bug in CSE.
This is a dup of bug 20249.

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

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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


[Bug rtl-optimization/20249] [4.0/4.1 Regression] ICE with -fprofile-arcs on ppc

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
16:25 ---
*** Bug 20409 has been marked as a duplicate of this bug. ***

-- 
   What|Removed |Added

 CC||jakub at gcc dot gnu dot org


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


[Bug c++/20408] Unnecessary code generated for empty structs

2005-03-10 Thread pcarlini at suse dot de

--- Additional Comments From pcarlini at suse dot de  2005-03-10 16:19 
---
Andrew, is Daniel Berlin struct aliasing work likely to help, here?

-- 
   What|Removed |Added

 CC||pcarlini at suse dot de


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


internal compiler error in 3.4.3-20050110

2005-03-10 Thread Marcin Mogielnicki
Hello,
I have problem using gcc 3.4.3. preprocessed file is attached. Gcc 
3.3.x works right, several 3.4.x's  checked so far crashed.

Marcin Mogielnicki, ICM, Poland
# gcc -c -Wall -std=gnu99 -mmmx -msse -D_GNU_SOURCE -ffast-math overfit.c 
-fPIC -DPIC -o overfit.o
overfit.c: In function `overfit_setstart': 
overfit.c:337: internal compiler error: in simplify_gen_subreg, at 
simplify-rtx.c:3521 Please submit a full bug report, with preprocessed 
source if appropriate. See http://bugs.gentoo.org/> for instructions. 
Preprocessed source stored into /tmp/ccKLbdAG.out file, please attach this 
to your bugreport.

# gcc -v Reading specs from 
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3-20050110/specs Configured with: 
/var/tmp/portage/gcc-3.4.3.20050110/work/gcc-3.4.3/configure 
--enable-version-specific-runtime-libs --prefix=/usr 
--bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/3.4.3-20050110 
--includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3-20050110/include 
--datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/3.4.3-20050110 
--mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/3.4.3-20050110/man 
--infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/3.4.3-20050110/info 
--with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.3-20050110/include/g++-v3 
--host=x86_64-pc-linux-gnu --disable-altivec --enable-nls 
--without-included-gettext --enable-__cxa_atexit --enable-clocale=gnu 
--with-system-zlib --disable-checking --disable-werror 
--disable-libunwind-exceptions --enable-multilib --disable-libgcj 
--enable-languages=c,c++,f77 --enable-shared --enable-threads=posix Thread 
model: posix
gcc version 3.4.3-20050110 (Gentoo Linux 3.4.3.20050110, 
ssp-3.4.3.20050110-0, pie-8.7.7)

# uname -a Linux n97 2.6.11-rc5-current #2 SMP Mon Feb 28 14:28:10 CET 
2005 x86_64 AMD Opteron(tm) Processor 246 AuthenticAMD GNU/Linux

The exact line which triggers bug is:
/usr/libexec/gcc/x86_64-pc-linux-gnu/3.4.3-20050110/cc1 -quiet 
-D_GNU_SOURCE -DPIC overfit.i -quiet -dumpbase overfit.c -mmmx -msse 
-mtune=k8 -auxbase-strip overfit.o -Wall -std=gnu99 -ffast-math -fPIC -o - 
-frandom-seed=0

overfit.i.gz
Description: Binary data


[Bug c++/20408] Unnecessary code generated for empty structs

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
17:06 ---
>From call.c:
  /* Don't pass empty class objects by value.  This is useful
 for tags in STL, which are used to control overload resolution.
 We don't need to handle other cases of copying empty classes.  */
  if (! decl || ! DECL_BUILT_IN (decl))
for (tmp = parms; tmp; tmp = TREE_CHAIN (tmp))
  if (is_empty_class (TREE_TYPE (TREE_VALUE (tmp)))
  && ! TREE_ADDRESSABLE (TREE_TYPE (TREE_VALUE (tmp
{
  tree t = build0 (EMPTY_CLASS_EXPR, TREE_TYPE (TREE_VALUE (tmp)));
  TREE_VALUE (tmp) = build2 (COMPOUND_EXPR, TREE_TYPE (t),
 TREE_VALUE (tmp), t);
}


-- 


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


[Bug c++/20408] Unnecessary code generated for empty structs

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
17:07 ---
>From cp-gimplifier.c:
case EMPTY_CLASS_EXPR:
  /* We create an INTEGER_CST with RECORD_TYPE and value zero.  */
  *expr_p = build_int_cst (TREE_TYPE (*expr_p), 0);

This is wrong.

-- 


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


[Bug c++/20408] Unnecessary code generated for empty structs

2005-03-10 Thread pcarlini at suse dot de

--- Additional Comments From pcarlini at suse dot de  2005-03-10 17:13 
---
Eh, I was looking at the very same code... Can't we deal with EMPTY_CLASS_EXPR
similarly to USING_STMT? ;) ;)

-- 


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


[Bug c++/20408] Unnecessary code generated for empty structs

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
17:15 ---
(In reply to comment #9)
> Eh, I was looking at the very same code... Can't we deal with EMPTY_CLASS_EXPR
> similarly to USING_STMT? ;) ;)

I think we should produce an empty CONSTRUCTOR (which I am testing right now).

-- 


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


[Bug middle-end/20408] Unnecessary code generated for empty structs

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
17:30 ---
(In reply to comment #10)
> I think we should produce an empty CONSTRUCTOR (which I am testing right now).
That did not fix it, we still get code generated for the "empty" struct:
;; D.1594 = {}
(nil)

;; foo (D.1594) [tail call]
(insn 10 8 11 (set (mem:QI (reg/f:SI 56 virtual-outgoing-args) [0 S1 A32])
(reg:QI 58 [ D.1594 ])) -1 (nil)
(nil))

(call_insn 11 10 0 (call (mem:QI (symbol_ref:SI ("_Z3foo1X") [flags 0x41] 
) [0 S1 A8])
(const_int 4 [0x4])) -1 (nil)
(nil)
(nil))


But on PPC we get:
;; D.1588 = {}
(nil)

;; foo (D.1588) [tail call]
(insn 10 8 11 0 (set (reg:QI 3 r3)
(reg:QI 118 [ D.1588 ])) -1 (nil)
(nil))

(call_insn/j 11 10 12 0 (parallel [
(call (mem:SI (symbol_ref:SI ("_Z3foo1X") [flags 0x41] 
) [0 S4 
A8])
(const_int 32 [0x20]))
(use (const_int 0 [0x0]))
(use (reg:SI 119))
(return)
]) -1 (nil)
(nil)
(expr_list:REG_DEP_TRUE (use (reg:QI 3 r3))
(nil)))


See the difference is that we pass on ppc via a register but on x86 we pass via 
the stack.  I don't know a 
way to fix this with a front-end change.


-- 
   What|Removed |Added

  Component|c++ |middle-end


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


[Bug middle-end/20408] Unnecessary code generated for empty structs

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
17:35 ---
The change to cp-gimplifier.c should still happen as it makes not create a 
INTEGER_CST for an 
aggregate.

-- 


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


[Bug c/20410] New: Add support for UTF-16 string syntax to C and C++

2005-03-10 Thread grhoten at jtcsv dot com
This is a request for enhancement. Please add platform independent UTF-16 string
syntax (platform independent means not using wchar_t). The variability of the
wchar_t type makes it unsuitable for UTF-16 strings. This request is to
implement ISO/IEC JTC1 SC22 WG14's technical report that is titled, "Extensions
for the programming language C to support new character data types". A copy of
the technical report can be found here:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf

There are already several compilers that support the u"" string syntax. IBM
Visual Age 7 and HP-UX aCC A.03.37 are two compilers that support the u""
syntax. Several other compilers already support UTF-16 strings through other
types of syntax (using U"" or L""). gcc is one of the few compilers that has no
UTF-16 syntax in the compiler.

Our project doesn't need any of the functions or the UTF-32 type that are
mentioned in the technical report. The ability to declare a UTF-16 string as
u"This is my string with a \u03BC" would be very helpful to us.

-- 
   Summary: Add support for UTF-16 string syntax to C and C++
   Product: gcc
   Version: unknown
Status: UNCONFIRMED
  Severity: enhancement
  Priority: P2
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: grhoten at jtcsv dot com
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug c/20410] Add support for UTF-16 string syntax to C and C++

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
18:12 ---
Confirmed, but this will most likely not going to happen until this is approved 
or is decided that is 
about to be approved.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-03-10 18:12:08
   date||


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


[Bug c/20410] Add support for UTF-16 string syntax to C and C++

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
18:12 ---
Suspending until then.

-- 
   What|Removed |Added

 Status|NEW |SUSPENDED


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


[Bug c++/19817] C++ front-end produces a cast instead of just &a.b (when call the deconstructor)

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
18:17 ---
The bug is in convert_to_base_statically.

-- 


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


[Bug rtl-optimization/20331] [3.4/4.0/4.1 Regression] Wrong code generation for the argument of the pure function in PIC

2005-03-10 Thread joern dot rennecke at st dot com

--- Additional Comments From joern dot rennecke at st dot com  2005-03-10 
18:18 ---
Subject: Re:  [3.4/4.0/4.1 Regression] Wrong code generation for the argument 
of the pure function in PIC

rth at gcc dot gnu dot org wrote:

>--- Additional Comments From rth at gcc dot gnu dot org  2005-03-10 13:57 
>---
>I'll agree that modified_{in,between}_p need to check the address for changes,
>since that controls the ultimate value that is accessed.
>
>I do not agree that alias.c needs to check the address for changes.  In that
>case we're trying to determine if assigning a value to one memory reference
>can possibly change the value of another memory reference.  Which is false for
>*all* read-only memory.
>
>  
>
After looking a bit more at true_dependence and friends, I think you are 
right; the callers have
checked or will be checking the address.  And apart from the dependency 
functions in alias.c,
I could find only modified_{in,between}_p using MEM_READONLY_P to 
indicate that the
entire MEM doesn't change.



-- 


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


[Bug java/20312] No warning on bad method

2005-03-10 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-03-10 
18:40 ---
Subject: Bug 20312

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-03-10 18:40:28

Modified files:
gcc/java   : ChangeLog parse.y 

Log message:
PR java/20312
* parse.y (checks_throws_clauses): Check exceptions list even when
the base class does not come from a source file being compiled.
(java_complete_lhs): Remove unused variable 'wfl'.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/java/ChangeLog.diff?cvsroot=gcc&r1=1.1570&r2=1.1571
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/java/parse.y.diff?cvsroot=gcc&r1=1.529&r2=1.530



-- 


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


[Bug middle-end/20411] New: Templated functions no inlined at -O2

2005-03-10 Thread chris at bubblescope dot net
I believe this is a known problem, but I couldn't find it anywhere.

The inliner at -O2 will attempt to inline any small functions. It will not
however try to inline functions will external linkage, which includes all
templated functions.

As much C++ code (including libstdc++) contains many small templated functions,
this means it is necessary to mark all these functions as inline to ensure they
are even considered at -O2.

Example: given:

void foo() {}
void foo2() {foo();}
int main() {foo2();}

then main() is optimised away to an empty function at -O2. However:

template
void foo() {}

template
void foo2() {foo();}

int main() {foo2();}

leaves the calls to foo2 and foo in at -O2.

Is there a good reason to not pull inlining of small functions (which in C++
typically consist of simply calling a new function with almost identical
parameters) into -O2, even when they have external linkage? (or make an
exception for templated functions?)

-- 
   Summary: Templated functions no inlined at -O2
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Severity: minor
  Priority: P2
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: chris at bubblescope dot net
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug regression/20412] New: ICE when -O1, regression from gcc-3.4.3

2005-03-10 Thread kminola at eng dot umd dot edu
/*
gcc-4.0 sparc-SunOS bug
 
gcc-4.0 -O0 -c foo.c // ok
gcc-4.0 -O1 -c foo.c // ICE

% gcc-4.0 -v
Using built-in specs.
Target: sparc-sun-solaris2.8
Configured with: /home/kate/gcc-4.0-20050305/src/gcc-4.0-20050305/configure
--enable-languages=c --prefix=/home/kate/gcc-4.0-20050305/sparc-SunOS
Thread model: posix
gcc version 4.0.0 20050305 (prerelease)
% 

*/
 
 
#define FALSE   0
 
int
foo()
{
  int  a,b,g;
  int  i,len;
  int  stop;
 
  len = 10;
  stop = FALSE;
  for (i=0; ihttp://gcc.gnu.org/bugzilla/show_bug.cgi?id=20412


[Bug libgcj/20392] invalid install/relink of llibgcj{,0_convenience} during `make install`

2005-03-10 Thread pluto at pld-linux dot org

--- Additional Comments From pluto at pld-linux dot org  2005-03-10 19:01 
---
[~/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libjava/.libs]  
drwxr-xr-x   2 pluto users 4096 2005-03-10 19:51 . 
drwxr-xr-x  15 pluto users 4096 2005-03-10 19:51 .. 
-rw---   1 pluto users11600 2005-03-10 19:42 boehm.o 
-rw---   1 pluto users35316 2005-03-10 19:37 defineclass.o 
-rw-r--r--   1 pluto users 4816 2005-03-10 00:30 exception.o 
-rwx--   1 pluto users33329 2005-03-10 19:51 gcj-dbtool 
-rwx--   1 pluto users 6409 2005-03-10 19:51 gij 
-rw-r--r--   1 pluto users 6612 2005-03-10 01:51 gij.o 
-rwx--   1 pluto users 6764 2005-03-10 19:51 grmic 
-rwx--   1 pluto users 6793 2005-03-10 19:51 grmiregistry 
-rw---   1 pluto users45404 2005-03-10 19:38 interpret.o 
-rw---   1 pluto users   119072 2005-03-10 19:37 jni.o 
-rwx--   1 pluto users 6765 2005-03-10 19:51 jv-convert 
-rw---   1 pluto users 32257574 2005-03-10 19:49 libgcj0_convenience.a 
lrwxrwxrwx   1 pluto users   25 2005-03-10 19:49 libgcj0_convenience.la 
-> ../libgcj0_convenience.la 
-rw---   1 pluto users 1319 2005-03-10 19:49 libgcj0_convenience.lai 
lrwxrwxrwx   1 pluto users   28 2005-03-10 19:47 libgcj0_convenience.so -> 
libgcj0_convenience.so.0.0.0 
lrwxrwxrwx   1 pluto users   28 2005-03-10 19:47 libgcj0_convenience.so.0 
-> libgcj0_convenience.so.0.0.0 
-rwx--   1 pluto users 19935083 2005-03-10 19:47 
libgcj0_convenience.so.0.0.0 
-rw---   1 pluto users  1661364 2005-03-10 19:49 libgcj.a 
lrwxrwxrwx   1 pluto users   12 2005-03-10 19:49 libgcj.la -> ../libgcj.la 
-rw---   1 pluto users 1299 2005-03-10 19:49 libgcj.lai 
lrwxrwxrwx   1 pluto users   15 2005-03-10 19:49 libgcj.so -> 
libgcj.so.6.0.0 
lrwxrwxrwx   1 pluto users   15 2005-03-10 19:49 libgcj.so.6 -> 
libgcj.so.6.0.0 
-rwx--   1 pluto users   928202 2005-03-10 19:49 libgcj.so.6.0.0 
-rw---   1 pluto users 5170 2005-03-10 19:50 libgij.a 
lrwxrwxrwx   1 pluto users   12 2005-03-10 19:50 libgij.la -> ../libgij.la 
-rw---   1 pluto users 1444 2005-03-10 19:50 libgij.lai 
lrwxrwxrwx   1 pluto users   15 2005-03-10 19:50 libgij.so -> 
libgij.so.6.0.0 
lrwxrwxrwx   1 pluto users   15 2005-03-10 19:50 libgij.so.6 -> 
libgij.so.6.0.0 
-rwx--   1 pluto users10298 2005-03-10 19:50 libgij.so.6.0.0 
-rw---   1 pluto users29780 2005-03-10 19:37 link.o 
-rw---   1 pluto users 4380 2005-03-10 19:42 posix.o 
-rw---   1 pluto users 7572 2005-03-10 19:42 posix-threads.o 
-rw---   1 pluto users32348 2005-03-10 19:36 prims.o 
-rw---   1 pluto users   106304 2005-03-10 19:38 verify.o 
 
 
Hmm, build is fine but when relinking fails 
libgcj.so.6.0.0 dissappears (libtool script removes it). 
 

-- 


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


[Bug libgcj/20392] invalid install/relink of llibgcj{,0_convenience} during `make install`

2005-03-10 Thread pluto at pld-linux dot org

--- Additional Comments From pluto at pld-linux dot org  2005-03-10 19:11 
---
I've recheckd the install log and found the reason of relinking error. 
 
 
/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/gcc/xgcc
 
-shared-libgcc 
-B/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/gcc/
 
-nostdinc++ 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libstdc++-v3/src
 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libstdc++-v3/src/.libs
 
-B/usr/i686-pld-linux/bin/ -B/usr/i686-pld-linux/lib/ 
-isystem /usr/i686-pld-linux/include -isystem /usr/i686-pld-linux/sys-include 
-shared 
-nostdlib /usr/lib/gcc/i686-pld-linux/4.0.0/../../../crti.o 
/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/gcc/crtbeginS.o
  
gnu/regexp/.libs/MessagesBundle.properties.o 
gnu/regexp/.libs/MessagesBundle_fr.properties.o 
org/ietf/jgss/.libs/MessagesBundle.properties.o -Wl,--whole-archive 
external/sax/.libs/libsax_convenience.a 
external/w3c_dom/.libs/libw3c_convenience.a 
../libffi/.libs/libffi_convenience.a ../boehm-gc/.libs/libgcjgc_convenience.a 
./libltdl/.libs/libltdlc.a 
-Wl,--no-whole-archive  -L/tmp/gcc-4.0.0-root-pluto/usr/lib 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libstdc++-v3/src
 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libstdc++-v3/src/.libs
 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libjava
 
external/sax/.libs/libsax_convenience.a 
external/w3c_dom/.libs/libw3c_convenience.a -L/usr/lib -lgcj0_convenience 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/gcc
 
-L/usr/lib/gcc/i686-pld-linux/4.0.0 
-L/usr/lib/gcc/i686-pld-linux/4.0.0/../../.. 
../libffi/.libs/libffi_convenience.a ../boehm-gc/.libs/libgcjgc_convenience.a 
-lpthread ./libltdl/.libs/libltdlc.a -ldl -lz -lgcc_s -lc 
-lgcc_s   
/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/gcc/crtendS.o
 /usr/lib/gcc/i686-pld-linux/4.0.0/../../../crtn.o  
-Wl,-soname -Wl,libgcj.so.6 -o .libs/libgcj.so.6.0.0 
/usr/bin/ld: cannot find -lgcj0_convenience 
collect2: ld returned 1 exit status 
 
 
Adding below path helpd. 
-L/home/users/pluto/multimedia/rpm/BUILD/gcc-4.0-20050305/obj-i686-pld-linux/i686-pld-linux/libjava/.libs
  

-- 


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


[Bug middle-end/20411] Templated functions are not found pure/const

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
19:21 ---
Note there are two problems here, foo2/foo in the orginal example are found to 
pure/const function so 
they are optimizated away which is different than inlining.

This all fixed on the tree profiling branch where we actually find the 
templates functions are pure/const 
also.

Note at -Os we do turn on -finline-functions and inline small functions.

-- 
   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Keywords||missed-optimization
   Last reconfirmed|-00-00 00:00:00 |2005-03-10 19:21:48
   date||
Summary|Templated functions no  |Templated functions are not
   |inlined at -O2  |found pure/const


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


[Bug c++/20381] [4.0/4.1 Regression] ICE in build_ptrmemfunc, at cp/typeck.c:5702

2005-03-10 Thread micis at gmx dot de

--- Additional Comments From micis at gmx dot de  2005-03-10 19:25 ---
I did a bootstrap and run the checks on x86_64-linux. No new regressions.
Then I compiled my application including QT 3.3.4, ACE 5.4.2, GSL 1.5 and all 
worked well.

Many thanks for the quick fix.

Michael Cieslinski

-- 


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


[Bug regression/20412] [4.0/4.1 Regression] RTL checking failure in the combiner

2005-03-10 Thread ebotcazou at gcc dot gnu dot org

--- Additional Comments From ebotcazou at gcc dot gnu dot org  2005-03-10 
19:40 ---
Confirmed:

pr20412.c: In function 'foo':
pr20412.c:20: internal compiler error: RTL check: expected elt 0 type 'e' or
'u', have 'i' (rtx reg) in simplify_set, at combine.c:5145
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.


-- 
   What|Removed |Added

 CC||ebotcazou at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |NEW
 Ever Confirmed||1
   Last reconfirmed|-00-00 00:00:00 |2005-03-10 19:40:51
   date||
Summary|ICE when -O1, regression|[4.0/4.1 Regression] RTL
   |from gcc-3.4.3  |checking failure in the
   ||combiner
   Target Milestone|--- |4.0.0


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


[Bug rtl-optimization/20412] [4.0/4.1 Regression] RTL checking failure in the combiner

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
19:41 ---
Without RTL checking we get this backtrace:
#0  0x0066027c in simplify_comparison (code=REG, pop0=0xbfffef8c, 
pop1=0xbfffef90) at ../../gcc/
combine.c:9584
#1  0x00650ad4 in simplify_set (x=0x4157ab04) at ../../gcc/combine.c:5169
#2  0x0064e8c4 in combine_simplify_rtx (x=0x4157ab04, op0_mode=VOIDmode, 
in_dest=0) at ../../
gcc/combine.c:4640
#3  0x0064b4cc in subst (x=0x4157ab04, from=0x41575800, to=0x4157aabc, 
in_dest=0, 
unique_copy=0) at ../../gcc/combine.c:3682
#4  0x006459cc in try_combine (i3=0x41573a78, i2=0x41573a50, i1=0x41573a00, 
new_direct_jump_p=0xb454) at ../../gcc/combine.c:2055
#5  0x00641f84 in combine_instructions (f=0x41506f60, nregs=133) at 
../../gcc/combine.c:774


-- 
   What|Removed |Added

  Component|regression  |rtl-optimization
   Keywords||ice-on-valid-code


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


[Bug middle-end/19985] executables created with -fprofile-arcs -ftest-coverage segfault in gcov_exit ()

2005-03-10 Thread janis at gcc dot gnu dot org

--- Additional Comments From janis at gcc dot gnu dot org  2005-03-10 19:42 
---
Created an attachment (id=8373)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8373&action=view)
smaller C test case

The test case provided by the submitter runs successfully if the executable is
built without -Wl,-E, as does the smaller C test case.  I understand that the
original program needs to use that option, so I'll continue looking  into this
to find a fix and perhaps a workaround.

The new test case fails with a plain "make" invocation for mainline,
4.0-branch,
and 3.4-branch, and passes for all of those with "make EXP=".

-- 
   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |janis at gcc dot gnu dot org
   |dot org |
 Status|UNCONFIRMED |ASSIGNED


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


[Bug rtl-optimization/20412] [4.0/4.1 Regression] RTL checking failure in the combiner

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
19:48 ---
Hmm, we are simplifing the following RTL:
(compare:CC (ne:SI (reg:SI 131)
(const_int 0 [0x0]))
(const_int 0 [0x0]))

To:
(reg:SI 131)

Which is wrong (but I should note that simplify_set for compare does not handle 
reg RTL).

-- 


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


[Bug libgcj/20392] invalid install/relink of llibgcj{,0_convenience} during `make install`

2005-03-10 Thread pluto at pld-linux dot org

--- Additional Comments From pluto at pld-linux dot org  2005-03-10 19:53 
---
Created an attachment (id=8374)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8374&action=view)
test patch.


-- 


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


[Bug c++/20401] error message is misleading

2005-03-10 Thread bangerth at dealii dot org

--- Additional Comments From bangerth at dealii dot org  2005-03-10 19:55 
---
This is a duplicate of a good number of other PRs. I don't have the time 
right now to find them, though... 
 
W. 

-- 


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


[Bug c++/20401] error message is misleading

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
19:56 ---
I could sware I closed this as a dup of bug 100 before.

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

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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


[Bug c++/100] confusing name lookup diagnostic

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
19:56 ---
*** Bug 20401 has been marked as a duplicate of this bug. ***

-- 
   What|Removed |Added

 CC||papadopo at shfj dot cea dot
   ||fr


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


[Bug other/17652] [meta-bug] GCC 4.1 pending patches

2005-03-10 Thread amylaar at gcc dot gnu dot org


-- 
   What|Removed |Added

  BugsThisDependsOn||20413


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


[Bug rtl-optimization/20413] New: VOIDmode LABEL_REFs are generated

2005-03-10 Thread amylaar at gcc dot gnu dot org
Various parts of the compiler generate LABEL_REFS with VOIDmode instead of 
Pmode.
This can cause some optimizations to be missed because two pieces of code
might be identical, except for the mode of their LABEL_REFS - then they still
compare as non-equal, e.g. for if-conversion or cross-jumping.

For targets that have varying Pmode settings and therefore use jump patterns
that don't specify the mode so that they can match e.g. either SImode of DImode,
the situation is more dire: when reload has to load the label into a register,
it needs the mode of the label_ref to determine the load of the reload.
VOIDmode in this place leads to an ICE, which is likely to prevent building
the gcc support libraries.

-- 
   Summary: VOIDmode LABEL_REFs are generated
   Product: gcc
   Version: 3.2
Status: UNCONFIRMED
  Keywords: ice-on-valid-code, missed-optimization, build
  Severity: normal
  Priority: P2
 Component: rtl-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: amylaar at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
OtherBugsDependingO 17652
 nThis:


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


[Bug rtl-optimization/20413] VOIDmode LABEL_REFs are generated

2005-03-10 Thread amylaar at gcc dot gnu dot org

--- Additional Comments From amylaar at gcc dot gnu dot org  2005-03-10 
19:59 ---
Created an attachment (id=8375)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=8375&action=view)
patch against 3.4


-- 


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


[Bug rtl-optimization/20412] [4.0/4.1 Regression] RTL checking failure in the combiner

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
20:09 ---
Found the typo.
The following patch fixes the ICE and corrects the mode problem.
I will apply this as ovbious as this was broken when 
simplify_relational_operation_1 was moved out of 
simplify_relational_operation.

Index: simplify-rtx.c
===

RCS file: /cvs/gcc/gcc/gcc/simplify-rtx.c,v
retrieving revision 1.232
diff -u -p -r1.232 simplify-rtx.c
--- simplify-rtx.c  5 Mar 2005 17:25:32 -   1.232
+++ simplify-rtx.c  10 Mar 2005 20:07:34 -
@@ -2882,7 +2882,7 @@ simplify_relational_operation_1 (enum rt
  /* If op0 is a comparison, extract the comparison arguments form it.  
*/
  if (code == NE)
{
- if (GET_MODE (op0) == cmp_mode)
+ if (GET_MODE (op0) == mode)
return simplify_rtx (op0);
  else
return simplify_gen_relational (GET_CODE (op0), mode, VOIDmode,


-- 


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


[Bug rtl-optimization/18628] [4.0/4.1 regression] miscompilation of switch statement in loop

2005-03-10 Thread aoliva at redhat dot com

--- Additional Comments From aoliva at gcc dot gnu dot org  2005-03-10 
20:38 ---
Subject: Re: [PR middle-end/18628] do not fold to label load from tablejump to 
reg

On Mar 10, 2005, Richard Henderson <[EMAIL PROTECTED]> wrote:

> On Wed, Mar 09, 2005 at 07:26:37AM -0300, Alexandre Oliva wrote:
>> +/* If it's not a REG, the REG_EQUAL note is inappropriate.  */
>> +if (REG_P (SET_DEST (set)))
>> +  set_unique_reg_note (insn, REG_EQUAL, label);

> I don't think this is a good idea at all.  This is just
> asking for reload to recreate a reference to the deleted label.

Here's a patch with that bit removed, along with the change in
cse_init that it required.  Ok?

Index: gcc/ChangeLog
from  Alexandre Oliva  <[EMAIL PROTECTED]>

PR middle-end/18628
* cse.c (fold_rtx_mem): Don't fold a load from a jumptable into a
register.

Index: gcc/cse.c
===
RCS file: /cvs/gcc/gcc/gcc/cse.c,v
retrieving revision 1.349
diff -u -p -r1.349 cse.c
--- gcc/cse.c 8 Mar 2005 13:56:56 - 1.349
+++ gcc/cse.c 10 Mar 2005 20:36:36 -
@@ -3515,8 +3515,30 @@ fold_rtx_mem (rtx x, rtx insn)
if (offset >= 0
&& (offset / GET_MODE_SIZE (GET_MODE (table))
< XVECLEN (table, 0)))
- return XVECEXP (table, 0,
- offset / GET_MODE_SIZE (GET_MODE (table)));
+ {
+   rtx label = XVECEXP
+ (table, 0, offset / GET_MODE_SIZE (GET_MODE (table)));
+   rtx set;
+
+   /* If we have an insn that loads the label from the
+  jumptable into a reg, we don't want to set the reg
+  to the label, because this may cause a reference to
+  the label to remain after the label is removed in
+  some very obscure cases (PR middle-end/18628).  */
+   if (!insn)
+ return label;
+
+   set = single_set (insn);
+
+   if (! set || SET_SRC (set) != x)
+ return x;
+
+   /* If it's a jump, it's safe to reference the label.  */
+   if (SET_DEST (set) == pc_rtx)
+ return label;
+
+   return x;
+ }
  }
if (table_insn && JUMP_P (table_insn)
&& GET_CODE (PATTERN (table_insn)) == ADDR_DIFF_VEC)
Index: gcc/testsuite/ChangeLog
from  Alexandre Oliva  <[EMAIL PROTECTED]>

* gcc.dg/pr18628.c: New.

Index: gcc/testsuite/gcc.dg/pr18628.c
===
RCS file: gcc/testsuite/gcc.dg/pr18628.c
diff -N gcc/testsuite/gcc.dg/pr18628.c
--- /dev/null   1 Jan 1970 00:00:00 -
+++ gcc/testsuite/gcc.dg/pr18628.c 10 Mar 2005 20:36:52 -
@@ -0,0 +1,31 @@
+/* { dg-do link } */
+/* { dg-options "-O2" } */
+
+/* PR middle-end/18628 exposed a problem in which cse folded a load
+   from a jump table into the label that was the target of the branch.
+   Unfortunately, the indirect jump was moved to a different basic
+   block, and the LABEL_REF copied to the register wasn't enough to
+   keep the cfg from optimizing the otherwise-unused label away.  So
+   we ended up with a dangling reference to the label.  */
+
+int i;
+
+int main()
+{
+  for (;;)
+  {
+switch (i)
+{
+  case 0:
+  case 1:
+return 1;
+
+  case 2:
+  case 3:
+return 0;
+
+  case 5:
+--i;
+}
+  }
+}

-- 
Alexandre Oliva http://www.ic.unicamp.br/~oliva/
Red Hat Compiler Engineer   [EMAIL PROTECTED], gcc.gnu.org}
Free Software Evangelist  [EMAIL PROTECTED], gnu.org}


-- 


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


[Bug target/18251] unable to find a register to spill in class `POINTER_REGS'

2005-03-10 Thread joel at gcc dot gnu dot org

--- Additional Comments From joel at gcc dot gnu dot org  2005-03-10 20:50 
---
Any chance of this getting committed to the 3.4, 4.0 and 4.1 branches so it
can be closed?

-- 


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


[Bug c++/20414] New: C-style cast fails to do proper conversion (explicit type conversion)

2005-03-10 Thread simonc235 at yahoo dot com
It seems that g++ is not compliant with the standard for old-style C casts -
potentially causing programs to crash.

Below is a code sample followed by an detailing of what happens in practice, and
what I think should happen. Cast#5 is the problematic cast.

 CODE STARTS HERE =

#include 

struct B
{
  B (const char *s):str (s)
  {
  }
  const char *str;
};
struct H
{
  H (const char *s)
  {
strcpy (str, s);
  }
  operator const B ()
  {
return B (str);
  }
  char str[1024];
};

void
f (const B & b)
{
  std::cout << b.str << std::endl;
}

int
main (int argc, char *argv[])
{
  H h ("hi4243");
  
  // cast #1: initialization by conversion for reference binding OK
  const B &b = h;

  // cast #2: direct-initialization
  const B b2(h);

  // cast #3: explicit static_cast OK
  f (static_cast(h));

  // cast #4: C-style cast, works as expected OK
  f ((const B)h);

  // cast #5: C-style cast, should cause an implicit conversion sequence,
  // but it does not ERROR!! program will crash
  f ((const B &)h);
  
  return 0;
}

 CODE ENDS HERE =

Here is what g++ does for each cast:

#1 - call the conversion operator in H to turn 'h' to type B and then proceed
using a standard conversion sequence. This is compliant with "Section 13.3.1.6
Initialization by conversion function for direct reference binding" of the 
standard.

#2 - essentially does the same as #1, but is there to show the validity of the
static_cast in cast #3 based on "Section 5.2.9 Static cast clause 2" of the
standard. The process itself is described in "Section 8.5 clauses 12 and 14" of
the standard.

#3 - performs an explicit static_cast to a reference type. Cast #2 shows that
this is well-formed.

#4 - performs a cast using the user-defined conversion operator as expected.

#5 - performs the equivalent of a reinterpret_cast. This causes the program to
crash. 

The standard is clear in saying that when an old-style C-cast("explicit type
conversion"/"cast notation") is used, the compiler should attempt the conversion
 -exactly- in this order: const_cast, static_cast, static_cast followed by
const_cast, reinterpret_cast, and reinterpret_cast followed by a const_cast. It
goes on to say that if more than one cast is possible, the -first- one in this
list should be used.

The code sample above shows that a static_cast works properly(#3), but an
explicit cast(#5) fails to detect the possibility of using a static_cast;
moreover, cast #4 seems to indicate that the problem is g++'s failure to do a
standard conversion sequence before looking up the user-defined conversion
operator in H.

I might be misreading or misunderstanding the standard, so if that is the case,
please let me know.

Thanks,
Simon

-- 
   Summary: C-style cast fails to do proper conversion (explicit
type conversion)
   Product: gcc
   Version: 3.4.3
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: simonc235 at yahoo dot com
CC: gcc-bugs at gcc dot gnu dot org


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


[Bug c++/20414] C-style cast fails to do proper conversion (explicit type conversion)

2005-03-10 Thread pcarlini at suse dot de

--- Additional Comments From pcarlini at suse dot de  2005-03-10 21:19 
---
Seems already fixed in mainline and 4_0-branch...

-- 


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


[Bug c++/20414] C-style cast fails to do proper conversion (explicit type conversion)

2005-03-10 Thread pinskia at gcc dot gnu dot org

--- Additional Comments From pinskia at gcc dot gnu dot org  2005-03-10 
21:23 ---
Fixed in 4.0.0 by:
http://gcc.gnu.org/ml/gcc-patches/2004-10/msg01676.html

>From that patch:
"The underlying problem was that we were not handling C-style casts as
one of const_cast, static_cast, or reinterpret_cast as required by
the standard.  (There are a few extra bits, but that's the basic
idea.)  So, I fixed that."

-- 
   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
   Keywords||wrong-code
 Resolution||FIXED
   Target Milestone|--- |4.0.0


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


[Bug target/20322] [4.0/4.1 Regression] Miscompilation of libcpp/expr.c at -O2+

2005-03-10 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-03-10 
21:26 ---
Subject: Bug 20322

CVSROOT:/cvs/gcc
Module name:gcc
Changes by: [EMAIL PROTECTED]   2005-03-10 21:26:12

Modified files:
gcc: ChangeLog combine.c 
gcc/testsuite  : ChangeLog 
Added files:
gcc/testsuite/gcc.dg: 20050307-1.c 

Log message:
PR target/20322
* combine.c (try_combine): If recog_for_combine added CLOBBERs
to NEWI2PAT, fail to combine if they are used by NEWPAT.

* gcc.dg/20050307-1.c: New test.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.7775&r2=2.7776
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/combine.c.diff?cvsroot=gcc&r1=1.478&r2=1.479
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.5138&r2=1.5139
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/20050307-1.c.diff?cvsroot=gcc&r1=NONE&r2=1.1



-- 


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


[Bug target/20322] [4.0/4.1 Regression] Miscompilation of libcpp/expr.c at -O2+

2005-03-10 Thread cvs-commit at gcc dot gnu dot org

--- Additional Comments From cvs-commit at gcc dot gnu dot org  2005-03-10 
21:30 ---
Subject: Bug 20322

CVSROOT:/cvs/gcc
Module name:gcc
Branch: gcc-4_0-branch
Changes by: [EMAIL PROTECTED]   2005-03-10 21:29:56

Modified files:
gcc: ChangeLog combine.c 
gcc/testsuite  : ChangeLog 
Added files:
gcc/testsuite/gcc.dg: 20050307-1.c 

Log message:
PR target/20322
* combine.c (try_combine): If recog_for_combine added CLOBBERs
to NEWI2PAT, fail to combine if they are used by NEWPAT.

* gcc.dg/20050307-1.c: New test.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.39&r2=2.7592.2.40
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/combine.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.475&r2=1.475.4.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.5084.2.33&r2=1.5084.2.34
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/20050307-1.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=NONE&r2=1.1.2.1



-- 


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


[Bug target/18251] unable to find a register to spill in class `POINTER_REGS'

2005-03-10 Thread ericw at evcohs dot com

--- Additional Comments From ericw at evcohs dot com  2005-03-10 21:30 
---
Marek, can you review this bug, the attached patches, and possibly approve
committing the fix?

Thanks
Eric

-- 
   What|Removed |Added

 CC||marekm at amelek dot gda dot
   ||pl


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


[Bug target/20322] [4.0/4.1 Regression] Miscompilation of libcpp/expr.c at -O2+

2005-03-10 Thread jakub at gcc dot gnu dot org

--- Additional Comments From jakub at gcc dot gnu dot org  2005-03-10 21:31 
---
Fixed in CVS.

-- 
   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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


  1   2   >