Re: question on verify_ssa failure due to ccp in dom3 (PR30784)

2007-03-24 Thread Dorit Nuzman
 On 3/14/07, Dorit Nuzman [EMAIL PROTECTED] wrote:
 
  Hi,
 
  We have a '{2,2}' expression (vector initializer) propagated by dom
into a
  BIT_FIELD_REF:
 
  before (bug.c.105t.vrp2):
 
vector long int vect_cst_.47;
vect_cst_.47_66 = {2, 2};
D.2103_79 = BIT_FIELD_REF vect_cst_.47_66, 64, 0;
 
  after (bug.c.106t.dom3):

Optimizing block #7
 
Optimizing statement L0:;
Optimizing statement D.2102_78 = BIT_FIELD_REF
vect_vec_iv_.48_67,
  64, 0;
Optimizing statement D.2103_79 = BIT_FIELD_REF vect_cst_.47_66,
64,
  0;
Replaced 'vect_cst_.47_66' with constant '{2, 2}'

 
D.2103_79 = BIT_FIELD_REF {2, 2}, 64, 0;
 
 
  ...which causes he following ICE:
  
 bug.c:8: error: invalid reference prefix
 {2, 2}
 bug.c:8: internal compiler error: verify_stmts failed
  
 
  Several testcases are available in the bugzilla report (PR30784).
 
  So, the question is - what needs to be fixed - is it copy propagation
that
  allows propagating the initializer into a BIT_FIELD_REF? or vect_lower
pass
  that creates these BIT_FIELD_REFs after vectorization?

 I think the BIT_FIELD_REF should be properly folded to a constant or
 the propagation
 not done.  fold_stmt_inplace is the candidate to look at,
 propagate_rhs_into_lhs in
 tree-ssa-dom.c to reject propagation into BIT_FIELD_REF.
 fold_ternary should be
 able to fold the BIT_FIELD_REF in question, it would be interesting to
 know why it
 doesn't.


the problem is that for the case of BIT_FIELD_REF fold_ternary folds only
if operand 0 is VECTOR_CST. In our case it's a CONSTRUCTOR. I'm testing the
patch below (comments?).

Thanks a bunch!

dorit

(See attached file: fix.txt)


 Richard.Index: fold-const.c
===
--- fold-const.c(revision 123159)
+++ fold-const.c(working copy)
@@ -12470,7 +12470,8 @@
   gcc_unreachable ();
 
 case BIT_FIELD_REF:
-  if (TREE_CODE (arg0) == VECTOR_CST
+  if ((TREE_CODE (arg0) == VECTOR_CST
+  || (TREE_CODE (arg0) == CONSTRUCTOR  TREE_CONSTANT (arg0)))
   type == TREE_TYPE (TREE_TYPE (arg0))
   host_integerp (arg1, 1)
   host_integerp (op2, 1))
@@ -12484,7 +12485,18 @@
   (idx = idx / width)
  TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg0)))
{
- tree elements = TREE_VECTOR_CST_ELTS (arg0);
+ tree elements = NULL_TREE;
+
+ if (TREE_CODE (arg0) == VECTOR_CST)
+   elements = TREE_VECTOR_CST_ELTS (arg0);
+ else
+   {
+ unsigned HOST_WIDE_INT idx;
+ tree value;
+
+ FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (arg0), idx, 
value)
+   elements = tree_cons (NULL_TREE, value, elements);
+   }
  while (idx--  0  elements)
elements = TREE_CHAIN (elements);
  if (elements)


Re: question on verify_ssa failure due to ccp in dom3 (PR30784)

2007-03-24 Thread Andrew Pinski

On 3/24/07, Dorit Nuzman [EMAIL PROTECTED] wrote:


the problem is that for the case of BIT_FIELD_REF fold_ternary folds only
if operand 0 is VECTOR_CST. In our case it's a CONSTRUCTOR. I'm testing the
patch below (comments?).


This patch looks correct, by the way this was caused by my patch to
make constant vector constructors invariant.

Thanks,
Andrew Pinski


Re: changing configure to default to gcc -g -O2 -fwrapv ...

2007-03-24 Thread Brooks Moses

Robert Dewar wrote:

Ian Lance Taylor wrote:

The new option -fstrict-overflow tells gcc that it can assume the
strict signed overflow semantics prescribed by the language standard.
This option is enabled by default at -O2 and higher.  Using
-fno-strict-overflow will tell gcc that it can not assume that signed
overflow is undefined behaviour.  The general effect of using this
option will be that signed overflow will become implementation
defined.  This will disable a number of generally harmless
optimizations, but will not have the same effect as -fwrapv.


Can you share the implementation definition (implementation defined
generally means that the implementation must define what it does).
This seems awfully vague.


I believe that what Ian means here is that the effect of a signed 
overflow will be to produce some arbitrary but well-defined result, with 
well-defined here meaning that the program will behave in a manner 
that's consistent with every subsequent access of it in the source code 
seeing the same value (until it's redefined, of course).  The actual 
value that is seen should, however, be considered entirely arbitrary.


This is distinguished from the -fstrict-overflow, which can produce 
results that are inconsistent, such as cases where n is negative but 
then0 path of an if statement is taken.


An example of that is if (m0) {n=m+1; if (n0) {...}}.  If the 
-fstrict-overflow option is specified, then the compiler can act as if 
m+1 never overflows, and optimize away the second check even if the 
addition is actually implemented with wrap in the case of overflow. 
Supply m=0xEFFF to the resulting program, and the ... gets 
executed with a negative n.


All that -fno-strict-overflow does is prevent that sort of optimization; 
it doesn't make any guarantees whatsoever about what value n will 
actually have in the resulting code, just that program is guaranteed to 
act as if the n0 and the ... both see the same value.


- Brooks



We're out of tree codes; now what?

2007-03-24 Thread Tarmo Pikaro
 One advantage of most computer languages (with the arguable exception of 
 C, but even it has preprocessor macros) is that they provide high-level 
 constructs that make it easier to write programs.

Constructors and destructors are quite simple functions which are 
executed at particular time. You could code constructs and destructs in C 
if you would like to do it. Have you seen symbian's two-pass constructs ?
You may think that yes, constructs are the essence of programming, 
but in fact they are not. More important is 1. clear, self-descriptive 
terminology
2. testing 3. dependency tracking (which source depends on which)

1 allows more fluent communication between programmers (and not only 
programmers)
2 allows to make programs which actually work. 3 improves reusability. 
(Which is currently does not exist in block box form - most of code is 
copy pasted from one place to another - white box reuse.)

 I believe that many 
 of these high-level constructs are reduced to more verbose lower-level 
 constructs in some of the language front ends (I know that this is true 
 in Fortran; I'm not as sure about other front ends), which means that 
 programming in Generic will require programming at a much lower level. 

How to present a program in visual form so it would be easy to 
understand and edit is another question. I have seen programs written
in C++ which were not working at all, and I have seen a programs written in
pure C - which were properly tested and worked faster than C++ analogues.
(And gcc is one of the examples which is written in C)
Sometime high level becomes too high. Just try to read XML standards
- they are suffering from overabstraction and not bound to any 
particular / real problem.

 I don't think your expected advantages to editing the compiler's 
 representation directly will counteract that disadvantage.

If I edit assembler code - of course I will not benefit from it. But 
it must not be assembler code - it must be as close for human 
to understand and as simple to edit/modify as possible.
 
--
Have a nice day!
Tarmo.


 

8:00? 8:25? 8:40? Find a flick in no time 
with the Yahoo! Search movie showtime shortcut.
http://tools.search.yahoo.com/shortcuts/#news


Freescale 8-bit microcontrollers GCC support (gcc-for-68HC08)

2007-03-24 Thread Vadim Kataev

Hello All,

I am looking for anyone who is interested to develop GCC compiler
support for Freescale (ex-Motorola) 8-bit microcontrollers family
(68HC08).

Thanks in advance,
Vadim


Re: No ifcvt during ce1 pass (fails i386/ssefp-2.c)

2007-03-24 Thread Steven Bosscher

On 3/15/07, Steven Bosscher [EMAIL PROTECTED] wrote:

On 3/15/07, Uros Bizjak [EMAIL PROTECTED] wrote:
 The testcase is:

 double x;
 q()
 {
   x=x5?5:x;
 }

 compile this with -O2 -msse2 -mfpmath=sse, and this testcase should
 compile to maxsd.

This happens because a fallthrough edge is meaningless in cfglayout
mode, but ifcvt.c still gives special meaning to the fallthrough edge.
 This should not matter, but it does for some reason, and I'm
investigating this right now. I'll try to come up with a fix asap.


This is what my fix will probably look like.  I've bootstrapped C only
on x86_64 and I have verified that it restores the CE1 transformation
for your test case.  I'll do a full bootstrap with testing over the
weekend. Early comments welcome ;-)

Gr.
Steven
	* ifcvt.c (noce_try_store_flag_constants): Don't check
	no_new_pseudos here.
	(noce_try_store_flag_constants): Don't check no_new_pseudos.
	(noce_try_addcc, noce_try_store_flag_mask, noce_try_cmove_arith,
	noce_try_cmove_arith, noce_try_minmax, noce_try_abs,
	noce_try_sign_mask): Likewise.
	(if_convert): Check no_new_pseudos here.

	(cond_exec_process_if_block, noce_process_if_block, find_if_block):
	Remove prototypes.
	(struct noce_if_info): Add then_bb, else_bb, join_bb members.
	(noce_get_condition): Handle new then_else_reversed argument.
	(noce_init_if_info): Remove, fold into noce_find_if_block.
	(noce_process_if_block): Take a struct noce_if_info as the
	argument.  Don't set up one based on ce_if_info.  Update pointer
	references accordingly.
	(cond_move_process_if_block): Likewise.
	(process_if_block): Removed.
	(find_if_block): Removed.  Move functionality two new functions,
	noce_find_if_block and cond_exec_find_if_block.
	(noce_find_if_block): New function.  Be aware of IF-THEN-JOIN
	blocks and the symmetric IF-ELSE-JOIN case.
	(cond_exec_find_if_block): Also new function mostly based on old
	find_if_block and process_if_block.
	(find_if_header): Replace find_if_block call with separately
	guarded calls to noce_find_if_block and cond_exec_find_if_block.
	(find_cond_trap): Update noce_get_condition call.
	(dead_or_predicable): Likewise.

Index: ifcvt.c
===
--- ifcvt.c	(revision 123180)
+++ ifcvt.c	(working copy)
@@ -96,16 +96,14 @@ static rtx last_active_insn (basic_block
 static basic_block block_fallthru (basic_block);
 static int cond_exec_process_insns (ce_if_block_t *, rtx, rtx, rtx, rtx, int);
 static rtx cond_exec_get_condition (rtx);
-static int cond_exec_process_if_block (ce_if_block_t *, int);
-static rtx noce_get_condition (rtx, rtx *);
+static rtx noce_get_condition (rtx, rtx *, bool);
 static int noce_operand_ok (rtx);
-static int noce_process_if_block (ce_if_block_t *);
-static int process_if_block (ce_if_block_t *);
 static void merge_if_block (ce_if_block_t *);
 static int find_cond_trap (basic_block, edge, edge);
 static basic_block find_if_header (basic_block, int);
 static int block_jumps_and_fallthru_p (basic_block, basic_block);
-static int find_if_block (ce_if_block_t *);
+static int noce_find_if_block (basic_block, edge, edge, int);
+static int cond_exec_find_if_block (ce_if_block_t *);
 static int find_if_case_1 (basic_block, edge, edge);
 static int find_if_case_2 (basic_block, edge, edge);
 static int find_memory (rtx *, void *);
@@ -598,8 +596,8 @@ cond_exec_process_if_block (ce_if_block_
 
 struct noce_if_info
 {
-  /* A basic block that ends in a simple conditional jump.  */
-  basic_block test_bb;
+  /* The basic blocks that make up the IF-THEN-{ELSE-,}JOIN block.  */
+  basic_block test_bb, then_bb, else_bb, join_bb;
 
   /* The jump that ends TEST_BB.  */
   rtx jump;
@@ -938,8 +936,7 @@ noce_try_store_flag_constants (struct no
   int normalize, can_reverse;
   enum machine_mode mode;
 
-  if (! no_new_pseudos
-   GET_CODE (if_info-a) == CONST_INT
+  if (GET_CODE (if_info-a) == CONST_INT
GET_CODE (if_info-b) == CONST_INT)
 {
   mode = GET_MODE (if_info-x);
@@ -1065,8 +1062,7 @@ noce_try_addcc (struct noce_if_info *if_
   rtx target, seq;
   int subtract, normalize;
 
-  if (! no_new_pseudos
-   GET_CODE (if_info-a) == PLUS
+  if (GET_CODE (if_info-a) == PLUS
rtx_equal_p (XEXP (if_info-a, 0), if_info-b)
(reversed_comparison_code (if_info-cond, if_info-jump)
 	  != UNKNOWN))
@@ -1157,9 +1153,8 @@ noce_try_store_flag_mask (struct noce_if
   int reversep;
 
   reversep = 0;
-  if (! no_new_pseudos
-   (BRANCH_COST = 2
-	  || STORE_FLAG_VALUE == -1)
+  if ((BRANCH_COST = 2
+   || STORE_FLAG_VALUE == -1)
((if_info-a == const0_rtx
 	rtx_equal_p (if_info-b, if_info-x))
 	  || ((reversep = (reversed_comparison_code (if_info-cond,
@@ -1314,7 +1309,8 @@ noce_try_cmove_arith (struct noce_if_inf
  conditional on their addresses followed by a load.  Don't do this
  early because it'll screw alias analysis.  Note that we've
  already checked for no side effects.  */
-  if (! 

Re: changing configure to default to gcc -g -O2 -fwrapv ...

2007-03-24 Thread Ian Lance Taylor
Robert Dewar [EMAIL PROTECTED] writes:

 Ian Lance Taylor wrote:
 
  The new option -fstrict-overflow tells gcc that it can assume the
  strict signed overflow semantics prescribed by the language standard.
  This option is enabled by default at -O2 and higher.  Using
  -fno-strict-overflow will tell gcc that it can not assume that signed
  overflow is undefined behaviour.  The general effect of using this
  option will be that signed overflow will become implementation
  defined.  This will disable a number of generally harmless
  optimizations, but will not have the same effect as -fwrapv.
 
 Can you share the implementation definition (implementation defined
 generally means that the implementation must define what it does).
 This seems awfully vague.

You're right, I shouldn't have said implementation defined.

What will happen with -fno-strict-overflow is whatever the processor
ISA happens to do when a signed arithmetic operation overflows.  For
ordinary machines it will just wrap.

It is intentionally vague.  If you need non-vague semantics, you
should use -fwrapv.  -fno-strict-overflow is intended to provide the
vague semantics which C compilers have historically provided, in
support of existing code.  -fstrict-overflow provides the reasonably
precise semantics of the language standard.  The options are generally
analogous to -fstrict-aliasing and -fno-strict-aliasing.

Ian


[patch, fortran] Remove redundant check in error.c

2007-03-24 Thread Brooks Moses
I added this TODO about a year ago, because at that point I wasn't 
completely sure if this particular check was needed or not.  It still 
looks like a no-op to me -- the only things that affect the offset 
variable are that it's set to zero some dozen lines above the patch 
region, and of course the two lines of context in the top of the patch 
-- and so I'm now proposing to remove it.


---
2007-03-23  Brooks Moses  [EMAIL PROTECTED]

* error.c (show_locus): Remove always-false test.

---

Tested with make check-fortran on i686-pc-linux-gnu.  Ok for mainline?

- Brooks
Index: error.c
===
--- error.c	(revision 123170)
+++ error.c	(working copy)
@@ -233,12 +233,6 @@
   if (cmax  terminal_width - 5)
 offset = cmax - terminal_width + 5;
 
-  /* TODO: Is there a good reason for the following apparently-redundant
- check, and the similar ones in the single-locus cases below?  */
-
-  if (offset  0)
-offset = 0;
-
   /* Show the line itself, taking care not to print more than what can
  show up on the terminal.  Tabs are converted to spaces, and 
  nonprintable characters are converted to a \xNN sequence.  */


--disable-multilib broken on x86_64

2007-03-24 Thread Martin Michlmayr
The following change broke --disable-multilib:

2007-03-23  Michael Meissner  [EMAIL PROTECTED]
H.J. Lu  [EMAIL PROTECTED]

../src/configure --enable-languages=c --disable-multilib x86_64-linux-gnu

/home/tbm/build/gcc-snapshot-20070324/build/./gcc/xgcc 
-B/home/tbm/build/gcc-snapshot-20070324/build/./gcc/ 
-B/usr/lib/gcc-snapshot/x86_64-linux-gnu/bin/ 
-B/usr/lib/gcc-snapshot/x86_64-linux-gnu/lib/ -isystem 
/usr/lib/gcc-snapshot/x86_64-linux-gnu/include -isystem 
/usr/lib/gcc-snapshot/x86_64-linux-gnu/sys-include -g -fkeep-inline-functions 
-O2  -O2 -g -O2  -DIN_GCC-W -Wall -Wwrite-strings -Wstrict-prototypes 
-Wmissing-prototypes -Wold-style-definition  -isystem ./include  -fPIC -g 
-DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED   -I. -I. 
-I../.././gcc -I../../../src/libgcc -I../../../src/libgcc/. 
-I../../../src/libgcc/../gcc -I../../../src/libgcc/../include 
-I../../../src/libgcc/../libdecnumber/no -I../../../src/libgcc/../libdecnumber 
-I../../libdecnumber -o decLibrary.o -MT decLibrary.o -MD -MP -MF 
decLibrary.dep -c ../../../src/libgcc/../libdecnumber/decLibrary.c
../../../src/libgcc/../libdecnumber/decLibrary.c:32:24: error: decimal128.h: No 
such file or directory
../../../src/libgcc/../libdecnumber/decLibrary.c:33:23: error: decimal64.h: No 
such file or directory
../../../src/libgcc/../libdecnumber/decLibrary.c:34:23: error: decimal32.h: No 
such file or directory
../../../src/libgcc/../libdecnumber/decLibrary.c:36: error: expected 
declaration specifiers or '...' before 'decimal32'
../../../src/libgcc/../libdecnumber/decLibrary.c:37: error: expected 
declaration specifiers or '...' before 'decimal64'
../../../src/libgcc/../libdecnumber/decLibrary.c:38: error: expected 
declaration specifiers or '...' before 'decimal128'
../../../src/libgcc/../libdecnumber/decLibrary.c: In function 'isinfd32':
...

-- 
Martin Michlmayr
http://www.cyrius.com/


Re: --disable-multilib broken on x86_64

2007-03-24 Thread Martin Michlmayr
* Martin Michlmayr [EMAIL PROTECTED] [2007-03-24 19:01]:
 The following change broke --disable-multilib:

Actually, it also fails without that option.
-- 
Martin Michlmayr
http://www.cyrius.com/


RE: --disable-multilib broken on x86_64

2007-03-24 Thread Lu, Hongjiu
I know. I will post a patch very soon.

H.J.
[EMAIL PROTECTED]

-Original Message-
From: Martin Michlmayr [mailto:[EMAIL PROTECTED]
Sent: Saturday, March 24, 2007 12:03 PM
To: Michael Meissner; Lu, Hongjiu
Cc: gcc@gcc.gnu.org
Subject: Re: --disable-multilib broken on x86_64

* Martin Michlmayr [EMAIL PROTECTED] [2007-03-24 19:01]:
 The following change broke --disable-multilib:

Actually, it also fails without that option.
--
Martin Michlmayr
http://www.cyrius.com/


Re: changing configure to default to gcc -g -O2 -fwrapv ...

2007-03-24 Thread Robert Dewar

Ian Lance Taylor wrote:


You're right, I shouldn't have said implementation defined.

What will happen with -fno-strict-overflow is whatever the processor
ISA happens to do when a signed arithmetic operation overflows.  For
ordinary machines it will just wrap.


Given that all ordinary machines wrap, is there really enough
difference in performance in practice between -fno-strict-overflow
and -fwrapv to justify adding this vague and rather dubious (given
it is vague) switch. Saying whatever the processor does is not
enough, since on some processors there are multiple addition
instructions (e.g. trapping and non-trapping variants)


It is intentionally vague.  If you need non-vague semantics, you
should use -fwrapv.  -fno-strict-overflow is intended to provide the
vague semantics which C compilers have historically provided, in
support of existing code.


Well I find vague semantics intrinsically unappealing!


RE: --disable-multilib broken on x86_64

2007-03-24 Thread Lu, Hongjiu
I can't duplicate the problem. It works fine for me.

H.J.
[EMAIL PROTECTED]

-Original Message-
From: Martin Michlmayr [mailto:[EMAIL PROTECTED]
Sent: Saturday, March 24, 2007 12:03 PM
To: Michael Meissner; Lu, Hongjiu
Cc: gcc@gcc.gnu.org
Subject: Re: --disable-multilib broken on x86_64

* Martin Michlmayr [EMAIL PROTECTED] [2007-03-24 19:01]:
 The following change broke --disable-multilib:

Actually, it also fails without that option.
--
Martin Michlmayr
http://www.cyrius.com/


Re: --disable-multilib broken on x86_64

2007-03-24 Thread Martin Michlmayr
* Lu, Hongjiu [EMAIL PROTECTED] [2007-03-24 12:27]:
 I can't duplicate the problem. It works fine for me.

I put the complete log at
http://people.debian.org/~tbm/logs/gcc-bootstrap.bz2 in case that
helps.
-- 
Martin Michlmayr
http://www.cyrius.com/


generated string libraries -Wformat

2007-03-24 Thread Bruce Korb
Hello,

I mess around with a lot of generated code.  That means I do automated
construction of libraries that use literal strings.  In order to
reduce address fixups, I often put all the literal strings into one long
string with each piece separated from the others with a NUL byte.
Unfortunately, I am then constrained from using ``-Wformat'' because
it fears I might accidentally be doing something wrong.

I believe the attached patch is sufficient to implement
   -Wno-format-contains-nul
(I am bootstrapping GCC and will be testing for a few hours.)

I'd like to hear any complaints about the change before I
spend too much time polishing it.  Thank you!

Regards, Bruce

patterned after usage of format-nonliteral

Index: c-format.c
===
--- c-format.c  (revision 123186)
+++ c-format.c  (working copy)
@@ -43,6 +43,7 @@
   if (setting != 1)
 {
   warn_format_nonliteral = setting;
+  warn_format_contains_nul = setting;
   warn_format_security = setting;
   warn_format_y2k = setting;
 }
@@ -1482,7 +1483,7 @@
   if (*format_chars == 0)
{
  if (format_chars - orig_format_chars != format_length)
-   warning (OPT_Wformat, embedded %\\0% in format);
+   warning (OPT_Wformat_contains_nul, embedded %\\0% in format);
  if (info-first_arg_num != 0  params != 0
   has_operand_number = 0)
{
Index: c.opt
===
--- c.opt   (revision 123186)
+++ c.opt   (working copy)
@@ -216,6 +216,10 @@
 C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning
 Warn about format strings that are not literals

+Wformat-contains-nul
+C ObjC C++ ObjC++ Var(warn_format_contains_nul)
+Warn about format strings that contain NUL bytes
+
 Wformat-security
 C ObjC C++ ObjC++ Var(warn_format_security) Warning
 Warn about possible security problems with format functions
Index: c-opts.c
===
--- c-opts.c(revision 123186)
+++ c-opts.c(working copy)
@@ -1106,6 +1106,8 @@
   -Wformat-zero-length ignored without -Wformat);
   warning (OPT_Wformat_nonliteral,
   -Wformat-nonliteral ignored without -Wformat);
+  warning (OPT_Wformat_contains_nul,
+  -Wformat-contains-nul ignored without -Wformat);
   warning (OPT_Wformat_security,
   -Wformat-security ignored without -Wformat);
 }


RE: --disable-multilib broken on x86_64

2007-03-24 Thread Lu, Hongjiu
Do you have any local changes? Does it work on Debian/i686?

H.J.
[EMAIL PROTECTED]

-Original Message-
From: Martin Michlmayr [mailto:[EMAIL PROTECTED]
Sent: Saturday, March 24, 2007 1:10 PM
To: Lu, Hongjiu
Cc: Michael Meissner; gcc@gcc.gnu.org
Subject: Re: --disable-multilib broken on x86_64

* Lu, Hongjiu [EMAIL PROTECTED] [2007-03-24 12:27]:
 I can't duplicate the problem. It works fine for me.

I put the complete log at
http://people.debian.org/~tbm/logs/gcc-bootstrap.bz2 in case that
helps.
--
Martin Michlmayr
http://www.cyrius.com/


Re: --disable-multilib broken on x86_64

2007-03-24 Thread Michael Meissner
On Sat, Mar 24, 2007 at 12:27:32PM -0700, Lu, Hongjiu wrote:
 I can't duplicate the problem. It works fine for me.
 
 H.J.
 [EMAIL PROTECTED]
 
 -Original Message-
 From: Martin Michlmayr [mailto:[EMAIL PROTECTED]
 Sent: Saturday, March 24, 2007 12:03 PM
 To: Michael Meissner; Lu, Hongjiu
 Cc: gcc@gcc.gnu.org
 Subject: Re: --disable-multilib broken on x86_64
 
 * Martin Michlmayr [EMAIL PROTECTED] [2007-03-24 19:01]:
  The following change broke --disable-multilib:
 
 Actually, it also fails without that option.
 --
 Martin Michlmayr
 http://www.cyrius.com/

Same here.  I won't be able to look at it in more detail until I get back to
the office on Monday.

-- 
Michael Meissner, AMD
90 Central Street, MS 83-29, Boxborough, MA, 01719, USA
[EMAIL PROTECTED]




Re: --disable-multilib broken on x86_64

2007-03-24 Thread Martin Michlmayr
* Lu, Hongjiu [EMAIL PROTECTED] [2007-03-24 13:22]:
 Do you have any local changes? Does it work on Debian/i686?

I get the failure without any local patches applied.  I don't know
about i686 but it works on ia64.
-- 
Martin Michlmayr
http://www.cyrius.com/


RE: --disable-multilib broken on x86_64

2007-03-24 Thread Lu, Hongjiu
Do you have

enable_decimal_float = no

in your gcc/Makefile?

H.J.
[EMAIL PROTECTED]

-Original Message-
From: Martin Michlmayr [mailto:[EMAIL PROTECTED]
Sent: Saturday, March 24, 2007 1:31 PM
To: Lu, Hongjiu
Cc: Michael Meissner; gcc@gcc.gnu.org
Subject: Re: --disable-multilib broken on x86_64

* Lu, Hongjiu [EMAIL PROTECTED] [2007-03-24 13:22]:
 Do you have any local changes? Does it work on Debian/i686?

I get the failure without any local patches applied.  I don't know
about i686 but it works on ia64.
--
Martin Michlmayr
http://www.cyrius.com/


Re: --disable-multilib broken on x86_64

2007-03-24 Thread Martin Michlmayr
* Lu, Hongjiu [EMAIL PROTECTED] [2007-03-24 13:22]:
 Do you have any local changes? Does it work on Debian/i686?

I noticed that my build does: -I../../../src/libgcc/../libdecnumber/no
which obviously cannot work.  I'm not quite sure why it's no though.
During configure I see

checking for decimal floating point... dpd

./gcc/Makefile:enable_decimal_float = bid
./libdecnumber/Makefile:enable_decimal_float= dpd
./x86_64-linux-gnu/libgcc/Makefile:enable_decimal_float = no
./x86_64-linux-gnu/libgcc/Makefile:DECNUMINC = 
-I$(srcdir)/../libdecnumber/$(enable_decimal_float) \

So where does enable_decimal_float = no come from?  config.* doesn't
say anyhing.  It checks whether decimal floating point is supported,
but there's nothing about enable_decimal_float.
-- 
Martin Michlmayr
http://www.cyrius.com/


Re: --disable-multilib broken on x86_64

2007-03-24 Thread Martin Michlmayr
* Lu, Hongjiu [EMAIL PROTECTED] [2007-03-24 14:00]:
 Do you have
 enable_decimal_float = no
 in your gcc/Makefile?

No, gcc/Makefile says enable_decimal_float = bid

gcc/Makefile:enable_decimal_float = bid
libdecnumber/Makefile:enable_decimal_float= dpd
x86_64-linux-gnu/libgcc/Makefile:enable_decimal_float = no
x86_64-linux-gnu/32/libgcc/Makefile:enable_decimal_float = no

-- 
Martin Michlmayr
http://www.cyrius.com/


Re: --disable-multilib broken on x86_64

2007-03-24 Thread Martin Michlmayr
* Martin Michlmayr [EMAIL PROTECTED] [2007-03-24 21:04]:
 So where does enable_decimal_float = no come from?  config.* doesn't
 say anyhing.

Sorry, I meant: config.* in x86_64-linux-gnu/libgcc doesn't...

 It checks whether decimal floating point is supported, but there's
 nothing about enable_decimal_float.

-- 
Martin Michlmayr
http://www.cyrius.com/


RE: --disable-multilib broken on x86_64

2007-03-24 Thread Lu, Hongjiu
enable_decimal_float should be the same for all Makefiles. I have:

[EMAIL PROTECTED] build-x86_64-linux]$ find -name Makefile | xargs egrep
enable_decimal_float[ \t]*=
./stage1-libdecnumber/Makefile:enable_decimal_float= bid
./x86_64-unknown-linux-gnu/libgcc/Makefile:enable_decimal_float = bid
./x86_64-unknown-linux-gnu/32/libgcc/Makefile:enable_decimal_float = bid
./prev-gcc/Makefile:enable_decimal_float = bid
./gcc/Makefile:enable_decimal_float = bid
./stage1-gcc/Makefile:enable_decimal_float = bid
./prev-libdecnumber/Makefile:enable_decimal_float= bid
./libdecnumber/Makefile:enable_decimal_float= bid
./prev-x86_64-unknown-linux-gnu/libgcc/Makefile:enable_decimal_float =
bid
./prev-x86_64-unknown-linux-gnu/32/libgcc/Makefile:enable_decimal_float
= bid
./stage1-x86_64-unknown-linux-gnu/libgcc/Makefile:enable_decimal_float =
bid
./stage1-x86_64-unknown-linux-gnu/32/libgcc/Makefile:enable_decimal_floa
t = bid
[EMAIL PROTECTED] build-x86_64-linux]$

You need to find out why yours are different.

H.J.
[EMAIL PROTECTED]

-Original Message-
From: Martin Michlmayr [mailto:[EMAIL PROTECTED]
Sent: Saturday, March 24, 2007 2:06 PM
To: Lu, Hongjiu
Cc: Michael Meissner; gcc@gcc.gnu.org
Subject: Re: --disable-multilib broken on x86_64

* Lu, Hongjiu [EMAIL PROTECTED] [2007-03-24 14:00]:
 Do you have
 enable_decimal_float = no
 in your gcc/Makefile?

No, gcc/Makefile says enable_decimal_float = bid

gcc/Makefile:enable_decimal_float = bid
libdecnumber/Makefile:enable_decimal_float= dpd
x86_64-linux-gnu/libgcc/Makefile:enable_decimal_float = no
x86_64-linux-gnu/32/libgcc/Makefile:enable_decimal_float = no

--
Martin Michlmayr
http://www.cyrius.com/


Re: --disable-multilib broken on x86_64

2007-03-24 Thread Martin Michlmayr
* Lu, Hongjiu [EMAIL PROTECTED] [2007-03-24 14:11]:
 You need to find out why yours are different.

The reason is that I configure for the target x86_64-linux-gnu while
you check for x86_64*-*-linux* (which doesn't match).  This means that
 - libdecnumber: sets dpd
 - gcc: sets bid (the match works because the canonical target is used)
 - libgcc: sets no
... and we get a build failure.

This can be fixed by making sure the canonical target is used in
configure.ac so the check for the target will actually work, as below.
OK to commit?

2007-03-24  Martin Michlmayr  [EMAIL PROTECTED]

configure.ac: Run AC_CANONICAL_{BUILD,HOST,TARGET} so the newly
added checks for decimal floating point work.

Index: libgcc/configure.ac
===
--- libgcc/configure.ac (revision 123187)
+++ libgcc/configure.ac (working copy)
@@ -7,6 +7,11 @@
 AC_INIT([GNU C Runtime Library], 1.0,,[libgcc])
 AC_CONFIG_SRCDIR([static-object.mk])
 
+# Determine the host, build, and target systems
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+
 AC_ARG_WITH(target-subdir,
 [  --with-target-subdir=SUBDIR  Configuring in a subdirectory for target])
 AC_ARG_WITH(cross-host,
Index: libdecnumber/configure.ac
===
--- libdecnumber/configure.ac   (revision 123187)
+++ libdecnumber/configure.ac   (working copy)
@@ -25,6 +25,11 @@
 AC_CONFIG_SRCDIR(decNumber.h)
 AC_CONFIG_MACRO_DIR(../config)
 
+# Determine the host, build, and target systems
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_CANONICAL_TARGET
+
 # Checks for programs.
 AC_PROG_MAKE_SET
 AC_PROG_CC

-- 
Martin Michlmayr
http://www.cyrius.com/


Re: --disable-multilib broken on x86_64

2007-03-24 Thread Martin Michlmayr
* Martin Michlmayr [EMAIL PROTECTED] [2007-03-24 22:25]:
 This can be fixed by making sure the canonical target is used in
 configure.ac so the check for the target will actually work, as below.
 OK to commit?

Actually, I should mention that I haven't fully bootstrapped GCC with
this change (although it fixes the build failure I saw before).
libgcc/configure.ac also uses $target for something else so I'm not
sure it's okay to canonicalize it.  But at least the patch shows the
problem and a possible solution, so maybe you (or someone who
understsands the build scripts) can fully test it.
-- 
Martin Michlmayr
http://www.cyrius.com/


Re: --disable-multilib broken on x86_64

2007-03-24 Thread Daniel Jacobowitz
On Sat, Mar 24, 2007 at 11:04:12PM +, Martin Michlmayr wrote:
 * Martin Michlmayr [EMAIL PROTECTED] [2007-03-24 22:25]:
  This can be fixed by making sure the canonical target is used in
  configure.ac so the check for the target will actually work, as below.
  OK to commit?
 
 Actually, I should mention that I haven't fully bootstrapped GCC with
 this change (although it fixes the build failure I saw before).
 libgcc/configure.ac also uses $target for something else so I'm not
 sure it's okay to canonicalize it.  But at least the patch shows the
 problem and a possible solution, so maybe you (or someone who
 understsands the build scripts) can fully test it.

libgcc should not use AC_CANONICAL_TARGET; --target doesn't mean
anything to a target library.  I'm not sure about libdecnumber - it
probably shouldn't be sensitive to $target either.

-- 
Daniel Jacobowitz
CodeSourcery


Re: We're out of tree codes; now what?

2007-03-24 Thread Nicholas Nethercote


Several alternatives were tried -- the sub-code approach, the 9-bit 
approach, the 16-bit approach.  It might be interesting to try using 
Cachegrind or Callgrind to better understand why the performance changes 
occurred.


Nick


Re: changing configure to default to gcc -g -O2 -fwrapv ...

2007-03-24 Thread Ian Lance Taylor
Robert Dewar [EMAIL PROTECTED] writes:

  You're right, I shouldn't have said implementation defined.
  What will happen with -fno-strict-overflow is whatever the processor
  ISA happens to do when a signed arithmetic operation overflows.  For
  ordinary machines it will just wrap.
 
 Given that all ordinary machines wrap, is there really enough
 difference in performance in practice between -fno-strict-overflow
 and -fwrapv to justify adding this vague and rather dubious (given
 it is vague) switch. Saying whatever the processor does is not
 enough, since on some processors there are multiple addition
 instructions (e.g. trapping and non-trapping variants)

I believe there is a comprehensible distinction between compiler will
not assume that signed overflow is undefined behaviour and compiler
will cause all arithmetic to wrap around.

In any case, I have no plans to continue working on this.  I described
my work in considerable detail as I did it and the patches have gone
through multiple rounds of review.  I would be happy to see your
concrete proposal.

Ian


Re: changing configure to default to gcc -g -O2 -fwrapv ...

2007-03-24 Thread Robert Dewar

Ian Lance Taylor wrote:


I believe there is a comprehensible distinction between compiler will
not assume that signed overflow is undefined behaviour and compiler
will cause all arithmetic to wrap around.

In any case, I have no plans to continue working on this.  I described
my work in considerable detail as I did it and the patches have gone
through multiple rounds of review.  I would be happy to see your
concrete proposal.


First, I would get some real figures on performance comparing

-fstrict-overflow
-fno-strict-overflow
-fwrapv

It is really hard to estimate the value of the second dubious
(dubious because ill-defined, it seems to try to create a state
of undefined definedness) switch compared to the other two
possibilities.


Ian




Re: [patch] generated string libraries -Wformat

2007-03-24 Thread Bruce Korb
This bootstraps in Linux i686  I can use -Wno-format-contains-nul to
suppress that warning.  OK?

Bruce Korb wrote:
 Hello,
 
 I mess around with a lot of generated code.  That means I do automated
 construction of libraries that use literal strings.  In order to
 reduce address fixups, I often put all the literal strings into one long
 string with each piece separated from the others with a NUL byte.
 Unfortunately, I am then constrained from using ``-Wformat'' because
 it fears I might accidentally be doing something wrong.
 
 I believe the attached patch is sufficient to implement
-Wno-format-contains-nul
 (I am bootstrapping GCC and will be testing for a few hours.)
 
 I'd like to hear any complaints about the change before I
 spend too much time polishing it.  Thank you!
 
 Regards, Bruce

2007-03-24  Bruce Korb  [EMAIL PROTECTED]

* c-format.c (set_Wformat): set warn_format_contains_nul to -Wformat
setting
(check_format_info_main): changed embedded NUL byte warning to test
for OPT_Wformat_contains_nul
* c.opt: define Wformat-contains-nul
* c-opts.c (c_common_post_options): complain if -Wformat-contains-nul
is set and -Wformat is not set

 Index: c-format.c
 ===
 --- c-format.c  (revision 123186)
 +++ c-format.c  (working copy)
 @@ -43,6 +43,7 @@
if (setting != 1)
  {
warn_format_nonliteral = setting;
 +  warn_format_contains_nul = setting;
warn_format_security = setting;
warn_format_y2k = setting;
  }
 @@ -1482,7 +1483,7 @@
if (*format_chars == 0)
 {
   if (format_chars - orig_format_chars != format_length)
 -   warning (OPT_Wformat, embedded %\\0% in format);
 +   warning (OPT_Wformat_contains_nul, embedded %\\0% in format);
   if (info-first_arg_num != 0  params != 0
has_operand_number = 0)
 {
 Index: c.opt
 ===
 --- c.opt   (revision 123186)
 +++ c.opt   (working copy)
 @@ -216,6 +216,10 @@
  C ObjC C++ ObjC++ Var(warn_format_nonliteral) Warning
  Warn about format strings that are not literals
 
 +Wformat-contains-nul
 +C ObjC C++ ObjC++ Var(warn_format_contains_nul)
 +Warn about format strings that contain NUL bytes
 +
  Wformat-security
  C ObjC C++ ObjC++ Var(warn_format_security) Warning
  Warn about possible security problems with format functions
 Index: c-opts.c
 ===
 --- c-opts.c(revision 123186)
 +++ c-opts.c(working copy)
 @@ -1106,6 +1106,8 @@
-Wformat-zero-length ignored without -Wformat);
warning (OPT_Wformat_nonliteral,
-Wformat-nonliteral ignored without -Wformat);
 +  warning (OPT_Wformat_contains_nul,
 +  -Wformat-contains-nul ignored without -Wformat);
warning (OPT_Wformat_security,
-Wformat-security ignored without -Wformat);
  }
 



Re: [patch] generated string libraries -Wformat

2007-03-24 Thread Joseph S. Myers
On Sat, 24 Mar 2007, Bruce Korb wrote:

 This bootstraps in Linux i686  I can use -Wno-format-contains-nul to
 suppress that warning.  OK?

This is not a complete patch submission, I await one with documentation 
and testcases (both for the option disabling the diagnostic and for the 
use of -Wformat-contains-nul being diagnosed just as other such ignored 
without diagnostics are tested in gcc.dg/format/opt-*.c).

-- 
Joseph S. Myers
[EMAIL PROTECTED]


Re: SoC Project: Propagating array data dependencies from Tree-SSA to RTL

2007-03-24 Thread Daniel Berlin

On 3/23/07, Alexander Monakov [EMAIL PROTECTED] wrote:

Hello,


I would be pleased to see Ayal Zaks as my mentor, because proposed
improvement is primarily targeted as modulo scheduling improvement. In
case this is not possible, I will seek guidance from Maxim Kuvyrkov.


Ayal has not signed up to be a mentor (as of yet). If he doesn't, i'd
be happy to mentor you here, since i wrote part of tree-data-ref.c


Re: We're out of tree codes; now what?

2007-03-24 Thread Daniel Berlin

On 3/23/07, Marc Espie [EMAIL PROTECTED] wrote:

In article [EMAIL PROTECTED] you write:
On 19 Mar 2007 19:12:35 -0500, Gabriel Dos Reis [EMAIL PROTECTED] wrote:
 similar justifications for yet another small% of slowdown have been
 given routinely for over 5 years now.  small% build up; and when they
 build up, they don't not to be convincing ;-)

But what is the solution? We can complain about performance all we
want (and we all love to do this), but without a plan to fix it we're
just wasting effort. Shall we reject every patch that causes a slow
down? Hold up releases if they are slower than their predecessors?
Stop work on extensions, optimizations, and bug fixes until we get our
compile-time performance back to some predetermined level?

Simple sociology.

Working on new optimizations = sexy.
Trimming down excess weight = unsexy.

GCC being vastly a volunteer project, it's much easier to find people
who want to work on their pet project, and implement a recent
optimization they found in a nice paper (that will gain 0.5% in some
awkward case) than to try to track down speed-downs and to reverse them.

I'm not sure I buy this.
Most of the new algorithm implementations I see are generally
replacing something slower with something faster.
Examples:
GVN-PRE is about 10x faster than SSAPRE in all cases, while doing
about 30% better on every testcase that SSAPRE sucked at.
The new points-to implementation is about 100x faster than the old one
(on smaller cases, it actually gets faster as the size of the problem
to be solved grows).
New ivopts algorithm replaced old ivopts algorithm for a large speedup
Newer propagation algorithm replaced older CCP implementation for a speedup

Most of these have not had *any* real effect on the time it takes to
run GCC in the common case.  Why?
Because except for the same edge cases you complain we are spending
time speeding up, they aren't a significant amount of time!
Most of the time is in building and manipulating trees and RTL.


And then disappointment, as the ssa stuff just got added on top of the
RTL stuff, and the RTL stuff that was supposed to vanish takes forever
to go away...


Mainly because people want it to produce *exactly* the same code it
used to, instead of being willing to take a small generated code
performance hit for a while.  Since backend code generation is a
moving target with very complex dependencies, this is a hard target to
hit.



At some point, it's going to be really attractive to start again from
scratch, without all the backends/frontend complexities and interactions
that make cleaning up stuff harder and harder...

This i agree with.  I'd much rather stop trying to do everything we
can to support more than the top 5 architectures (though i have no
problem with all their OS variants).


Also, I have the feeling that quite a few of gcc sponsors are in it for
the publicity mostly (oh look, we're nice people giving money to gcc),
and new optimization passes that get 0.02% out of SPEC are better bang
for their money.

And some people just like to sit on the sidelines and complain instead
of submitting patches to do anything.


Kuddoes go to the people who actually manage to reverse some of the
excesses of the new passes.


Most of these people are the same people who implemented the passes in
the first place!


Re: -fkeep-inline-functions and broken Cygwin bootstrap (was: Building GCC 4.3.0 on Cygwin...)

2007-03-24 Thread Andrew Pinski

On 3/24/07, Brian Dessent [EMAIL PROTECTED] wrote:

Dave Korn wrote:

 # 405 /usr/include/stdio.h 3 4

[ Which is from newlib (libc/include/stdio.h) if anyone reading this
doesn't have a Cygwin system handy. ]

 static __inline__ int __sgetc_r(struct _reent *__ptr, FILE *__p)
   {
 [...]

   The critical difference is the presence or absence of
 -fkeep-inline-functions.  I think I remember there being some change between
 gcc-3.x and gcc-4.x in inline handling and I think that's what's biting us
 now; I think this may only arise in stage1 where we're trying to use 3.x to
 compile 4.x.

I too thought that this was related to the c99 inline changes, but I
think those only apply to extern inline which is not the case here.

The real cause seems to be that -fkeep-inline-functions was a no-op up
until: http://gcc.gnu.org/ml/gcc-patches/2007-02/msg01396.html, which
seems to roughly correspond to when bootstrap stopped working on Cygwin.



Actually it was not a no-op in 3.4, just 4.2 (or was it also broken in
4.1) broke -fkeep-inline-functions and nobody noticed until later.
Cygwin's headers are broken with respect of -fkeep-inline-functions
and need to be fixed.

-- Pinski


[Bug target/30784] [4.3 regression] ICE on loop vectorization (-O1 -march=athlon-xp -ftree-vectorize)

2007-03-24 Thread dorit at il dot ibm dot com


--- Comment #7 from dorit at il dot ibm dot com  2007-03-24 08:00 ---
patch: http://gcc.gnu.org/ml/gcc/2007-03/msg00918.html


-- 


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



[Bug fortran/31200] wrong code: procedure call with pointer-returning-function as argument

2007-03-24 Thread patchapp at dberlin dot org


--- Comment #5 from patchapp at dberlin dot org  2007-03-24 08:10 ---
Subject: Bug number PR31200

A patch for this bug has been added to the patch tracker.
The mailing list url for the patch is
http://gcc.gnu.org/ml/gcc-patches/2007-03/msg01595.html


-- 


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



[Bug fortran/31320] Illegal read with gfortran.dg/alloc_comp_assign_2.f90 and *_3.f90

2007-03-24 Thread pault at gcc dot gnu dot org


--- Comment #1 from pault at gcc dot gnu dot org  2007-03-24 08:16 ---
(In reply to comment #0)

 Is this example (PR 20541) really valid?

Lahey does not complain.

Paul 


-- 


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



[Bug tree-optimization/31333] New: ICE with -fno-tree-dominator-opts -ftree-vectorize -msse

2007-03-24 Thread dorit at il dot ibm dot com
The testcase gcc.dg/vect/no-tree-dom-vect-bug.c ICEs on i386-linux when
compiled as follows:

gcc no-tree-dom-vect-bug.c -O2 -fno-tree-dominator-opts -ftree-vectorize -msse

no-tree-dom-vect-bug.c: In function âmain1â:
no-tree-dom-vect-bug.c:15: internal compiler error: in expand_simple_binop, at
optabs.c:1192

This happens somewhere between these passes:
no-tree-dom-vect-bug.c.036t.release_ssa
no-tree-dom-vect-bug.c.044t.apply_inline
(maybe when the vectorized main1 is inlined into main?) 

gdb traceback:
function=0x8703852 expand_simple_binop) at ../../gcc/gcc/diagnostic.c:656
656   internal_error (in %s, at %s:%d, function, trim_filename (file),
line);
(gdb) backtrace
#0  fancy_abort (file=0x8703282 ../../gcc/gcc/optabs.c, line=1192,
function=0x8703852 expand_simple_binop) at ../../gcc/gcc/diagnostic.c:656
#1  0x08271467 in expand_simple_binop (mode=Variable mode is not available.
) at ../../gcc/gcc/optabs.c:1192
#2  0x081a2a3f in force_operand (value=0xb7d01d98, target=0xb7a9d960)
at ../../gcc/gcc/expr.c:6069
#3  0x08622a4d in move_invariant_reg (loop=0xa363f60, invno=0)
at ../../gcc/gcc/loop-invariant.c:1180
#4  0x086236bd in move_loop_invariants () at
../../gcc/gcc/loop-invariant.c:1242
#5  0x08621757 in rtl_move_loop_invariants () at ../../gcc/gcc/loop-init.c:256
#6  0x082775c6 in execute_one_pass (pass=0x87ad8a0) at
../../gcc/gcc/passes.c:1058
#7  0x082777b7 in execute_pass_list (pass=0x87ad8a0) at
../../gcc/gcc/passes.c:1110
#8  0x082777ca in execute_pass_list (pass=0x87ad7e0) at
../../gcc/gcc/passes.c:
#9  0x082777ca in execute_pass_list (pass=0x87aab60) at
../../gcc/gcc/passes.c:
#10 0x08356638 in tree_rest_of_compilation (fndecl=0xb7ce9a80)
at ../../gcc/gcc/tree-optimize.c:412
#11 0x0808db8c in c_expand_body (fndecl=0xb7ce9a80) at
../../gcc/gcc/c-common.c:4285
#12 0x084b4ab1 in cgraph_expand_function (node=0xb7c1b700)
at ../../gcc/gcc/cgraphunit.c:1015
#13 0x084b6e96 in cgraph_optimize () at ../../gcc/gcc/cgraphunit.c:1084
#14 0x0805b4df in c_write_global_declarations () at ../../gcc/gcc/c-decl.c:7930
#15 0x082f5bd6 in toplev_main (argc=20, argv=0xbfd26434) at
../../gcc/gcc/toplev.c:1063
#16 0x080d5e02 in main (argc=Cannot access memory at address 0x1
) at ../../gcc/gcc/main.c:35
(gdb) up
#2  0x081a2a3f in force_operand (value=0xb7d01d98, target=0xb7a9d960)
at ../../gcc/gcc/expr.c:6069
6069  return expand_simple_binop (GET_MODE (value), code, op1,
op2,
(gdb) p code
$1 = VEC_SELECT


-- 
   Summary: ICE with -fno-tree-dominator-opts -ftree-vectorize -msse
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dorit at il dot ibm dot com
 GCC build triplet: i386-linux
  GCC host triplet: i386-linux
GCC target triplet: i386-linux


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



[Bug bootstrap/31039] Latest CVS-stage 2-Cannot create executables

2007-03-24 Thread schwab at suse dot de


--- Comment #4 from schwab at suse dot de  2007-03-24 08:26 ---
(In reply to comment #2)
 Note that the newly built bootstrap compiler fails the configure tests which
 have a trailing -V on the command line.

This is harmless, it's only for informational purpose (various tries to make
the compiler display its version number, but nothing depends on this).


-- 


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



Re: [Bug bootstrap/31039] Latest CVS-stage 2-Cannot create executables

2007-03-24 Thread Angelo Graziosi

--- Comment #3 from tprince at computer dot org 2007-03-24 01:22
(In reply to comment #3)


 The  code thus commented out apparently requires some cygwin
 extensions in the library which have disappeared since 20070224 (quoted
 by submitter as last working build).  I concur, having built
 successfully the 20070223


For the sake of completeness, the last useful trunk that builds fine is 
trunk 122292-20070224 downloaded with

 svn -q co -r122292 svn://gcc.gnu.org/svn/gcc/trunk gcc


Since trunk 122293 the build fails as reported.


Cheers,

   Angelo.




[Bug target/31334] New: Bad codegen for vectorized induction with altivec

2007-03-24 Thread dorit at il dot ibm dot com
Turns out the code we are generating for vectorized induction ppc is quite
terrible - the vector induction variable is advanced by a constant step in the
loop (e.g., {4,4,4,4} as in the testcase below). This is the sequence gcc
currently creates for altivec in order to generate the {4,4,4,4} vector:

li 0,4
stw 0,-48(1)
lvewx 0,0,9
vspltw 0,0,0

So, one thing to figure out is why we don't use the immediate form of the splat
(vspltiw); The other is - why this sequence ends up getting generated not only
before the loop (see insns marked with 1 below), but also inside the
loop... (see insns marked with 2 below). 

This is the testcase (it is basically the testcase
gcc.dg/vect/no-tree-scev-cprop-vect-iv-1.c with larger loop count to avoid
complete unrolling):

int main1 (int X)
{
  int s = X;
  int i;
  for (i = 0; i  96; i++)
s += i;
  return s;
}

compiled as follows:
gcc -O2 -ftree-vectorize -maltivec -fno-tree-scev-cprop -S t.c


li 0,4  1
stw 0,-48(1)1
ld 9,[EMAIL PROTECTED](2)
li 0,23
mr 11,3
mtctr 0
lvx 1,0,9
addi 9,1,-48
vor 13,1,1
lvewx 0,0,9 1
vspltw 0,0,01
vadduwm 1,1,0
.p2align 4,,15
.L2:
li 0,4  2
addi 9,1,-48
vadduwm 13,13,1
stw 0,-48(1)2
lvewx 0,0,9 2
vspltw 0,0,02
vadduwm 1,1,0
bdnz .L2


-- 
   Summary: Bad codegen for vectorized induction with altivec
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: dorit at il dot ibm dot com
 GCC build triplet: powerpc-linux
  GCC host triplet: powerpc-linux
GCC target triplet: powerpc-linux


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



[Bug libfortran/31335] New: Calls lstat(), stat() and fstat() in libgfortran should be protected by autoconf HAVE_{L,,F}STAT macros

2007-03-24 Thread fxcoudert at gcc dot gnu dot org
In libgfortran/intrinsics/stat.c, we unconditionally issue calls to stat(),
fstat() and lstat(). This is wrong, and these calls should be protected by
HAVE_{,F,L}STAT macros, themselves defined by autoconf.

This bug is annoying especially for lstat(), because it's non-POSIX and it's
not present on mingw; this, in turns, prevent us from creating a DLL
libgfortran (when the recent libtool patch by Steve Ellcey will be commited, it
will be the only bug still preventing this!). In the lstat() case, when lstat()
is not available and stat() is available, we should use it instead.

PS: We already have a test HAVE_WORKING_STAT that is used by the I/O system to
see if the system stat implementation fits the needs of the I/O code, but this
is unrelated.


-- 
   Summary: Calls lstat(), stat() and fstat() in libgfortran should
be protected by autoconf HAVE_{L,,F}STAT macros
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libfortran
AssignedTo: fxcoudert at gcc dot gnu dot org
ReportedBy: fxcoudert at gcc dot gnu dot org


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



[Bug libfortran/31335] Calls lstat(), stat() and fstat() in libgfortran should be protected by autoconf HAVE_{L,,F}STAT macros

2007-03-24 Thread fxcoudert at gcc dot gnu dot org


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2007-03-24 11:02:38
   date||


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



[Bug testsuite/25241] DejaGNU does not distinguish between errors and warnings

2007-03-24 Thread manu at gcc dot gnu dot org


--- Comment #40 from manu at gcc dot gnu dot org  2007-03-24 11:10 ---
In the current version of the patch janis-try2, this is more correct

-set expmsg $msgprefix\[^\n]*$expmsg
+set expmsg $msgprefix\[^\n\]*$expmsg

But it doesn't make any real difference (or so it seems).


-- 


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



[Bug fortran/31278] Backtrace/coredump for array-out-of-bounds errors (-fbounds-check)

2007-03-24 Thread fxcoudert at gcc dot gnu dot org


--- Comment #3 from fxcoudert at gcc dot gnu dot org  2007-03-24 12:13 
---
We already have that, if you compile with both -fbounds-check and -fbacktrace.
(Same thing is true for coredump, with -fdump-core.) Do you want fries with
that?

$ cat bbb.f90 
subroutine f
  integer :: x(2), u
  u = 3
  x(u) = 0
end subroutine f

  call f
  end
$ gfortran -static bbb.f90 -fbounds-check -fbacktrace -g  ./a.out
Fortran runtime error: Array reference out of bounds for array 'x', upper bound
of dimension 1 exceeded (in file 'bbb.f90', at line 4)

Backtrace for this error:
  + function f_ (0x8048229)
at line 4 of file bbb.f90
  + in the main program
at line 7 of file bbb.f90
  + function __libc_start_main (0x805C9F9)


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug fortran/31219] ICE on array of character function results

2007-03-24 Thread pault at gcc dot gnu dot org


--- Comment #3 from pault at gcc dot gnu dot org  2007-03-24 12:31 ---
Subject: Bug 31219

Author: pault
Date: Sat Mar 24 12:30:58 2007
New Revision: 123183

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=123183
Log:
2007-03-24  Paul Thomas  [EMAIL PROTECTED]

PR fortran/31215
* trans-expr.c (gfc_apply_interface_mapping_to_expr): Return
int result that is non-zero if the expression is the function
result.  Only the characteristics of the result expression
can be used in a procedure interface, so simplify LEN in situ
using its character length.

PR fortran/31219
PR fortran/31200
* trans-expr.c (gfc_conv_function_call): Do not use
gfc_conv_expr_reference for actual pointer function with formal
target because a temporary is created that does not transfer
the reference correctly.  Do not indirect formal pointer
functions since it is the function reference that is needed.

2007-03-24  Paul Thomas  [EMAIL PROTECTED]

PR fortran/31219
* gfortran.dg/pointer_function_actual_1.f90: New test.

PR fortran/31200
* gfortran.dg/pointer_function_actual_2.f90: New test.

PR fortran/31215
* gfortran.dg/result_in_spec_1.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90
trunk/gcc/testsuite/gfortran.dg/pointer_function_actual_2.f90
trunk/gcc/testsuite/gfortran.dg/result_in_spec_1.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/trans-expr.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug fortran/31200] wrong code: procedure call with pointer-returning-function as argument

2007-03-24 Thread pault at gcc dot gnu dot org


--- Comment #6 from pault at gcc dot gnu dot org  2007-03-24 12:31 ---
Subject: Bug 31200

Author: pault
Date: Sat Mar 24 12:30:58 2007
New Revision: 123183

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=123183
Log:
2007-03-24  Paul Thomas  [EMAIL PROTECTED]

PR fortran/31215
* trans-expr.c (gfc_apply_interface_mapping_to_expr): Return
int result that is non-zero if the expression is the function
result.  Only the characteristics of the result expression
can be used in a procedure interface, so simplify LEN in situ
using its character length.

PR fortran/31219
PR fortran/31200
* trans-expr.c (gfc_conv_function_call): Do not use
gfc_conv_expr_reference for actual pointer function with formal
target because a temporary is created that does not transfer
the reference correctly.  Do not indirect formal pointer
functions since it is the function reference that is needed.

2007-03-24  Paul Thomas  [EMAIL PROTECTED]

PR fortran/31219
* gfortran.dg/pointer_function_actual_1.f90: New test.

PR fortran/31200
* gfortran.dg/pointer_function_actual_2.f90: New test.

PR fortran/31215
* gfortran.dg/result_in_spec_1.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90
trunk/gcc/testsuite/gfortran.dg/pointer_function_actual_2.f90
trunk/gcc/testsuite/gfortran.dg/result_in_spec_1.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/trans-expr.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug fortran/31215] ICE on valid code with gfortran

2007-03-24 Thread pault at gcc dot gnu dot org


--- Comment #4 from pault at gcc dot gnu dot org  2007-03-24 12:31 ---
Subject: Bug 31215

Author: pault
Date: Sat Mar 24 12:30:58 2007
New Revision: 123183

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=123183
Log:
2007-03-24  Paul Thomas  [EMAIL PROTECTED]

PR fortran/31215
* trans-expr.c (gfc_apply_interface_mapping_to_expr): Return
int result that is non-zero if the expression is the function
result.  Only the characteristics of the result expression
can be used in a procedure interface, so simplify LEN in situ
using its character length.

PR fortran/31219
PR fortran/31200
* trans-expr.c (gfc_conv_function_call): Do not use
gfc_conv_expr_reference for actual pointer function with formal
target because a temporary is created that does not transfer
the reference correctly.  Do not indirect formal pointer
functions since it is the function reference that is needed.

2007-03-24  Paul Thomas  [EMAIL PROTECTED]

PR fortran/31219
* gfortran.dg/pointer_function_actual_1.f90: New test.

PR fortran/31200
* gfortran.dg/pointer_function_actual_2.f90: New test.

PR fortran/31215
* gfortran.dg/result_in_spec_1.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90
trunk/gcc/testsuite/gfortran.dg/pointer_function_actual_2.f90
trunk/gcc/testsuite/gfortran.dg/result_in_spec_1.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/trans-expr.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug target/31334] Bad codegen for vectorized induction with altivec

2007-03-24 Thread dje at gcc dot gnu dot org


--- Comment #1 from dje at gcc dot gnu dot org  2007-03-24 13:30 ---
Loading the constant through memory appears to be related to the vector plus
expander.

118t.final_cleanup shows:

  vect_vec_iv_.32 = vect_cst_.30 + {4, 4, 4, 4};

and 120r.expand shows:

;; vect_vec_iv_.32 = vect_cst_.30 + {4, 4, 4, 4}
(insn 12 10 13 (set (reg:SI 134)
(const_int 4 [0x4])) -1 (nil)
(nil))

(insn 13 12 14 (set (mem/c/i:SI (plus:SI (reg/f:SI 115 virtual-stack-vars)
(const_int 8 [0x8])) [2 S4 A128])
(reg:SI 134)) -1 (nil)
(nil))

(insn 14 13 15 (parallel [
(set (reg:V4SI 133)
(mem/c/i:V4SI (plus:SI (reg/f:SI 115 virtual-stack-vars)
(const_int 8 [0x8])) [2 S16 A128]))
(unspec [
(const_int 0 [0x0])
] 196)
]) -1 (nil)
(nil))

(insn 15 14 16 (set (reg:V4SI 133)
(vec_duplicate:V4SI (vec_select:SI (reg:V4SI 133)
(parallel [
(const_int 0 [0x0])
] -1 (nil)
(nil))

(insn 16 15 0 (set (reg:V4SI 126 [ vect_vec_iv_.32 ])
(plus:V4SI (reg:V4SI 127 [ vect_cst_.30 ])
(reg:V4SI 133))) -1 (nil)
(nil))

The constants appear to be constructor expressions:

 plus_expr 0x4019d700
type vector_type 0x400e7ea0 __vector signed int
type integer_type 0x40074340 int sizes-gimplified public SI
size integer_cst 0x40068500 constant invariant 32
unit size integer_cst 0x400682a0 constant invariant 4
align 32 symtab 0 alias set 2 canonical type 0x40074340 precision
32 min integer_cst 0x400684a0 -2147483648 max integer_cst 0x400684c0
2147483647
pointer_to_this pointer_type 0x40074e38
V4SI
size integer_cst 0x40068740 constant invariant 128
unit size integer_cst 0x40068760 constant invariant 16
align 128 symtab 0 alias set -1 canonical type 0x400e7ea0 nunits 4

arg 0 var_decl 0x401a3150 vect_vec_iv_.32 type vector_type 0x400e7ea0
__vector signed int
used ignored V4SI file d.c line 2 size integer_cst 0x40068740 128
unit size integer_cst 0x40068760 16
align 128 context function_decl 0x4015ae00 main1
(reg:V4SI 126 [ vect_vec_iv_.32 ])
arg 1 constructor 0x401a6120 type vector_type 0x400e7ea0 __vector signed
int
constant


 constructor 0x401a6120
type vector_type 0x400e7ea0 __vector signed int
type integer_type 0x40074340 int sizes-gimplified public SI
size integer_cst 0x40068500 constant invariant 32
unit size integer_cst 0x400682a0 constant invariant 4
align 32 symtab 0 alias set 2 canonical type 0x40074340 precision
32 min integer_cst 0x400684a0 -2147483648 max integer_cst 0x400684c0
2147483647
pointer_to_this pointer_type 0x40074e38
V4SI
size integer_cst 0x40068740 constant invariant 128
unit size integer_cst 0x40068760 constant invariant 16
align 128 symtab 0 alias set -1 canonical type 0x400e7ea0 nunits 4
constant


And the constructors are thrown into memory.  The original expression with a
constant never gets converted to RTL and never is evaluated as an easy vector
constant.


-- 

dje at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||pinskia at gcc dot gnu dot
   ||org
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2007-03-24 13:30:37
   date||


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



[Bug fortran/31219] ICE on array of character function results

2007-03-24 Thread pault at gcc dot gnu dot org


--- Comment #4 from pault at gcc dot gnu dot org  2007-03-24 13:56 ---
Fixed on trunk

Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug fortran/31215] ICE on valid code with gfortran

2007-03-24 Thread pault at gcc dot gnu dot org


--- Comment #5 from pault at gcc dot gnu dot org  2007-03-24 13:57 ---
Fixed on trunk

Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug fortran/31200] wrong code: procedure call with pointer-returning-function as argument

2007-03-24 Thread pault at gcc dot gnu dot org


--- Comment #7 from pault at gcc dot gnu dot org  2007-03-24 13:58 ---
Fixed on trunk

Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug fortran/31209] too much indirection for actual pointer procedure

2007-03-24 Thread pault at gcc dot gnu dot org


--- Comment #2 from pault at gcc dot gnu dot org  2007-03-24 13:59 ---
Fixed on trunk but wrongly numbered in ChangeLog

Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug fortran/31219] ICE on array of character function results

2007-03-24 Thread pault at gcc dot gnu dot org


--- Comment #5 from pault at gcc dot gnu dot org  2007-03-24 14:00 ---
Sorry, this was not fixed - it was PR31209 that was fixed.

Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|FIXED   |


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



[Bug fortran/31200] wrong code: procedure call with pointer-returning-function as argument

2007-03-24 Thread pault at gcc dot gnu dot org


--- Comment #8 from pault at gcc dot gnu dot org  2007-03-24 14:17 ---
Subject: Bug 31200

Author: pault
Date: Sat Mar 24 14:17:34 2007
New Revision: 123184

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=123184
Log:
2007-03-24  Paul Thomas  [EMAIL PROTECTED]

PR fortran/31215
* trans-expr.c (gfc_apply_interface_mapping_to_expr): Return
int result that is non-zero if the expression is the function
result.  Only the characteristics of the result expression
can be used in a procedure interface, so simplify LEN in situ
using its character length.

PR fortran/31219
PR fortran/31200
* trans-expr.c (gfc_conv_function_call): Do not use
gfc_conv_expr_reference for actual pointer function with formal
target because a temporary is created that does not transfer
the reference correctly.  Do not indirect formal pointer
functions since it is the function reference that is needed.

2007-03-24  Paul Thomas  [EMAIL PROTECTED]

PR fortran/31219
* gfortran.dg/pointer_function_actual_1.f90: New test.

PR fortran/31200
* gfortran.dg/pointer_function_actual_2.f90: New test.

PR fortran/31215
* gfortran.dg/result_in_spec_1.f90: New test.

Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90


-- 


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



[Bug fortran/31215] ICE on valid code with gfortran

2007-03-24 Thread pault at gcc dot gnu dot org


--- Comment #6 from pault at gcc dot gnu dot org  2007-03-24 14:17 ---
Subject: Bug 31215

Author: pault
Date: Sat Mar 24 14:17:34 2007
New Revision: 123184

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=123184
Log:
2007-03-24  Paul Thomas  [EMAIL PROTECTED]

PR fortran/31215
* trans-expr.c (gfc_apply_interface_mapping_to_expr): Return
int result that is non-zero if the expression is the function
result.  Only the characteristics of the result expression
can be used in a procedure interface, so simplify LEN in situ
using its character length.

PR fortran/31219
PR fortran/31200
* trans-expr.c (gfc_conv_function_call): Do not use
gfc_conv_expr_reference for actual pointer function with formal
target because a temporary is created that does not transfer
the reference correctly.  Do not indirect formal pointer
functions since it is the function reference that is needed.

2007-03-24  Paul Thomas  [EMAIL PROTECTED]

PR fortran/31219
* gfortran.dg/pointer_function_actual_1.f90: New test.

PR fortran/31200
* gfortran.dg/pointer_function_actual_2.f90: New test.

PR fortran/31215
* gfortran.dg/result_in_spec_1.f90: New test.

Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90


-- 


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



[Bug fortran/31219] ICE on array of character function results

2007-03-24 Thread pault at gcc dot gnu dot org


--- Comment #6 from pault at gcc dot gnu dot org  2007-03-24 14:17 ---
Subject: Bug 31219

Author: pault
Date: Sat Mar 24 14:17:34 2007
New Revision: 123184

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=123184
Log:
2007-03-24  Paul Thomas  [EMAIL PROTECTED]

PR fortran/31215
* trans-expr.c (gfc_apply_interface_mapping_to_expr): Return
int result that is non-zero if the expression is the function
result.  Only the characteristics of the result expression
can be used in a procedure interface, so simplify LEN in situ
using its character length.

PR fortran/31219
PR fortran/31200
* trans-expr.c (gfc_conv_function_call): Do not use
gfc_conv_expr_reference for actual pointer function with formal
target because a temporary is created that does not transfer
the reference correctly.  Do not indirect formal pointer
functions since it is the function reference that is needed.

2007-03-24  Paul Thomas  [EMAIL PROTECTED]

PR fortran/31219
* gfortran.dg/pointer_function_actual_1.f90: New test.

PR fortran/31200
* gfortran.dg/pointer_function_actual_2.f90: New test.

PR fortran/31215
* gfortran.dg/result_in_spec_1.f90: New test.

Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gfortran.dg/pointer_function_actual_1.f90


-- 


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



[Bug libfortran/31335] Calls lstat(), stat() and fstat() in libgfortran should be protected by autoconf HAVE_{L,,F}STAT macros

2007-03-24 Thread fxcoudert at gcc dot gnu dot org


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

URL||http://gcc.gnu.org/ml/gcc-
   ||patches/2007-
   ||03/msg01605.html
   Keywords||patch
   Target Milestone|--- |4.3.0


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



[Bug target/30784] [4.3 regression] ICE on loop vectorization (-O1 -march=athlon-xp -ftree-vectorize)

2007-03-24 Thread patchapp at dberlin dot org


--- Comment #8 from patchapp at dberlin dot org  2007-03-24 17:10 ---
Subject: Bug number PR30784

A patch for this bug has been added to the patch tracker.
The mailing list url for the patch is
http://gcc.gnu.org/ml/gcc-patches/2007-03/msg01607.html


-- 


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



[Bug java/31325] gcj support for ARM EABI

2007-03-24 Thread s_j_newbury at yahoo dot co dot uk


--- Comment #10 from s_j_newbury at yahoo dot co dot uk  2007-03-24 17:30 
---
(In reply to comment #3)
 Created an attachment (id=13262)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13262action=view) [edit]
 EABI can't implement _Unwind_Backtrace
 
 This patch is from this bug:
 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29206
 

This patch doesn't help right now.  It only affects sjlj exceptions and they
obviously aren't used due to --disable-sjlj-exceptions anyhow.  Using this
patch  as is causes _Unwind_Reason_Code to be undefined when sjlj exceptions
are disabled.


-- 


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



[Bug tree-optimization/31333] ICE with -fno-tree-dominator-opts -ftree-vectorize -msse

2007-03-24 Thread rguenth at gcc dot gnu dot org


--- Comment #1 from rguenth at gcc dot gnu dot org  2007-03-24 17:30 ---
The backtrace shows rtl invariant motion.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||rakdver at gcc dot gnu dot
   ||org


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



[Bug testsuite/25241] DejaGNU does not distinguish between errors and warnings

2007-03-24 Thread manu at gcc dot gnu dot org


--- Comment #41 from manu at gcc dot gnu dot org  2007-03-24 17:55 ---
(In reply to comment #38)
 For comment #32 I get the failure but don't understand the problem; the regexp
 matches the message, doesn't it?  This doesn't seem any different from other
 Fortran tests but it's the only one that fails; perhaps there's something
 special about specifying the line number in the test directive, or that the
 message comes from a file with a different name.  I'll stare at it again 
 later.

No, it doesn't match. If you look closely to this message compared to other
fortran messages:

* Broken match:

Warning: /home/manuel/src/trunk/gcc/testsuite/gfortran.dg/badline.f:2: file
src/badline.F left but not entered

* Correct match:

/home/manuel/src/trunk/gcc/testsuite/gfortran.dg/blockdata_1.f90:17.7:

 common j ! { dg-warning cannot contain blank COMMON }
  1
Warning: BLOCK DATA unit cannot contain blank COMMON at (1)


The difference is that in the first case the filename plus position is between
the Warning: and the message to match. Actually I think the deja-gnu or some
*.exp file does some preprocessing of the output. For example, if you look at
the output of gcc/testsuite/gfortran.dg/continuation_1.f90

/home/manuel/src/trunk/gcc/testsuite/gfortran.dg/continuation_1.f90:11.10:

 world! ! { dg-warning Warning: Missing '' in continued character co
 1
Warning: Missing '' in continued character constant at (1)

FAIL: gfortran.dg/continuation_1.f90  -O0   (test for warnings, line 11)
FAIL: gfortran.dg/continuation_1.f90  -O0  (test for excess errors)
Excess errors:
/home/manuel/src/trunk/gcc/testsuite/gfortran.dg/continuation_1.f90:11:
Warning: Missing '' in continued character constant at (1)

The message shown after Excess errors is slightly different than the
original. 

I don't think that we should handle this corner case in our patch: either it is
handled by whatever function preprocesses fortran output or the output itself
is changed by the fortran front-end. We could as well use the original
dg-warning / dg-error directives for fortran.

So, gcc/testsuite/gcc.dg/20041213-1.c is the issue number 1 now. I think it
should match without modifying the testcase.


-- 


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



[Bug libfortran/31052] Bad IOSTAT values when readings NAMELISTs past EOF

2007-03-24 Thread jvdelisle at verizon dot net


--- Comment #30 from jvdelisle at verizon dot net  2007-03-24 19:02 ---
Subject: Re:  Bad IOSTAT values when readings NAMELISTs
 past EOF

I will keep at it on this.  It seems we have a conflict between the SPEC 
test that was failing and the namelist testcases.  Unfortunately I don't 
have the SPEC test case to see to try to weed this out.

What I will do is work on the patch i had before and send it to folks to 
  test the SPEC portion.  That may take a while, so please be patient.

Sorry for the troubles.


-- 


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



[Bug java/31325] gcj support for ARM EABI

2007-03-24 Thread s_j_newbury at yahoo dot co dot uk


--- Comment #11 from s_j_newbury at yahoo dot co dot uk  2007-03-24 19:58 
---
I have everything built except for libjava/exception.cc which fails as seen
below.

This I believe is due to the lack of an implementation of _Unwind_Backtrace in
the ARM EABI.  What needs to be done to address this?  Can anybody give me any
pointers?  

In http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29206 Daniel Jackobowitz says
As for ARM, I'm not sure what to do to fix the issue.  ARM old ABI is stuck
with SJLJ.  And the EABI can't implement _Unwind_Backtrace either.  I have been
speaking with someone at ARM about the ABI implications of this, on and off,
but I don't have a lot of hope for it working out without a GNU extension.


depbase=`echo jni.lo | sed 's|[^/]*$|.deps/|;s|\.lo$||'`; \
if /bin/sh ./libtool --mode=compile
/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/build/./gcc/xgcc
-shared-libgcc
-B/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/build/./gcc
-nostdinc++
-L/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/build/arm-iwmmxt-linux-gnueabi/libstdc++-v3/src
-L/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/build/arm-iwmmxt-linux-gnueabi/libstdc++-v3/src/.libs
-B/usr/lib/gcj-4.2.0_beta20070307/arm-iwmmxt-linux-gnueabi/bin/
-B/usr/lib/gcj-4.2.0_beta20070307/arm-iwmmxt-linux-gnueabi/lib/ -isystem
/usr/lib/gcj-4.2.0_beta20070307/arm-iwmmxt-linux-gnueabi/include -isystem
/usr/lib/gcj-4.2.0_beta20070307/arm-iwmmxt-linux-gnueabi/sys-include
-DHAVE_CONFIG_H -I.
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava
-I./include -I./gcj 
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava
-Iinclude
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/include
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/classpath/include
-Iclasspath/include
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/classpath/native/fdlibm
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/../boehm-gc/include
-I../boehm-gc/include 
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/libltdl
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/libltdl
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/.././libjava/../gcc

-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/../libffi/include
-I../libffi/include  -fno-rtti -fnon-call-exceptions  -fdollars-in-identifiers
-Wswitch-enum -D_FILE_OFFSET_BITS=64 -Wextra -Wall -D_GNU_SOURCE
-DPREFIX=\/usr/lib/gcj-4.2.0_beta20070307\
-DTOOLEXECLIBDIR=\/usr/lib/gcj-4.2.0_beta20070307/lib\
-DJAVA_HOME=\/usr/lib/gcj-4.2.0_beta20070307/jre\
-DBOOT_CLASS_PATH=\/usr/lib/gcj-4.2.0_beta20070307/jre/lib/rt.jar\
-DJAVA_EXT_DIRS=\/usr/lib/gcj-4.2.0_beta20070307/share/java/ext\
-DGCJ_ENDORSED_DIRS=\/usr/lib/gcj-4.2.0_beta20070307/share/java/gcj-endorsed\
-DGCJ_VERSIONED_LIBDIR=\/usr/lib/gcj-4.2.0_beta20070307/lib/gcj-4.2.0-beta20070307\
-DPATH_SEPARATOR=\:\
-DLIBGCJ_DEFAULT_DATABASE=\/usr/lib/gcj-4.2.0_beta20070307/lib/gcj-4.2.0-beta20070307/classmap.db\
-DLIBGCJ_DEFAULT_DATABASE_PATH_TAIL=\gcj-4.2.0-beta20070307/classmap.db\
-O2 -pipe  -D_GNU_SOURCE -MT jni.lo -MD -MP -MF $depbase.Tpo -c -o jni.lo
/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/jni.cc;
\
then mv -f $depbase.Tpo $depbase.Plo; else rm -f $depbase.Tpo;
exit 1; fi
/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/build/./gcc/xgcc
-shared-libgcc
-B/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/build/./gcc
-nostdinc++
-L/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/build/arm-iwmmxt-linux-gnueabi/libstdc++-v3/src
-L/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/build/arm-iwmmxt-linux-gnueabi/libstdc++-v3/src/.libs
-B/usr/lib/gcj-4.2.0_beta20070307/arm-iwmmxt-linux-gnueabi/bin/
-B/usr/lib/gcj-4.2.0_beta20070307/arm-iwmmxt-linux-gnueabi/lib/ -isystem
/usr/lib/gcj-4.2.0_beta20070307/arm-iwmmxt-linux-gnueabi/include -isystem
/usr/lib/gcj-4.2.0_beta20070307/arm-iwmmxt-linux-gnueabi/sys-include
-DHAVE_CONFIG_H -I.
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava
-I./include -I./gcj
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava
-Iinclude
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/include
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/classpath/include
-Iclasspath/include
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/classpath/native/fdlibm
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/../boehm-gc/include
-I../boehm-gc/include
-I/home/tmp/portage/dev-java/gcj-4.2.0_beta20070307/work/gcc-4.2-20070307/libjava/libltdl

[Bug fortran/30655] Undue out-of-bounds warning

2007-03-24 Thread fxcoudert at gcc dot gnu dot org


--- Comment #3 from fxcoudert at gcc dot gnu dot org  2007-03-24 20:20 
---
Subject: Bug 30655

Author: fxcoudert
Date: Sat Mar 24 20:19:51 2007
New Revision: 123187

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=123187
Log:
PR fortran/30655

* expr.c (check_dimension): Fix logic of comparisons.

* gfortran.dg/bounds_check_6.f90: New test.

Added:
trunk/gcc/testsuite/gfortran.dg/bounds_check_6.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/resolve.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug fortran/30655] Undue out-of-bounds warning

2007-03-24 Thread fxcoudert at gcc dot gnu dot org


--- Comment #4 from fxcoudert at gcc dot gnu dot org  2007-03-24 20:21 
---
Fixed on 4.3, will not backport.


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED
   Target Milestone|--- |4.3.0


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



[Bug fortran/31213] ICE on valid code with gfortran

2007-03-24 Thread fxcoudert at gcc dot gnu dot org


--- Comment #2 from fxcoudert at gcc dot gnu dot org  2007-03-24 20:53 
---
Reduced testcase:

function tricky(ugly)
  interface yoagly
pure function ugly()
  complex ugly(2)
end function ugly
  end interface yoagly

  logical la(size(yoagly()))
  print *, size(la)
end function tricky

I would have bet that this would be fixed when Paul fixed PR31215, because it's
an ICE in the same place, but it appears it isn't fixed. Paul, since the
previous PRs were really related, you might understand this one easily?


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||fxcoudert at gcc dot gnu dot
   ||org, pault at gcc dot gnu
   ||dot org
  Known to fail||4.1.3 4.2.0 4.3.0
   Last reconfirmed|2007-03-21 17:15:41 |2007-03-24 20:53:03
   date||


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



[Bug c++/31336] New: template friends and Koenig lookup

2007-03-24 Thread andrew dot olson at hughes dot net
Koenig lookup doesn't seem to work properly when dealing with template friends
defined within a class.  Friends defined within the definition of a class
shouldn't be visible to the enclosing namespace, and should only be able to be
found via Koenig lookup.  I see that this appears to work as expected for
normal friends, but GCC still appears make the name visible for template
friends.

I think that this behaviour is incorrect, but could I be missing something? 
The Comeau C++ with EDG front end seems to agree with my reading of the spec,
but then its possible that its behaviour is incorrect instead.

In the following test program, I think that tests #5 and #7 should fail to
compile, but do not.  Neither bar(int, int) and bar(Foo, int) contain an
associated class to class Bar and therefore should not be found.

Thanks!

Andy



#include iostream

struct Bar;

struct Foo
{
  Foo() { }
  Foo(const Bar src) { std::cout  Bar-Foo  std::endl; }
  Foo(int src) { std::cout  int-Foo  std::endl; }

  friend void foo(const Foo a, int b)
  {
std::cout  Foo   b  std::endl;
  }
};

struct Bar
{
  operator int() { return(9); } // for test 9

  templatetypename A, typename B
  friend void bar(const A a, B b)
  {
std::cout  Bar   b  std::endl;
  }
};

int main(int argc, char *argv[])
{
  Foo f;
  Bar b;

  //foo(1, 0);  // #0 - EDG, MSVC 8, GCC 4.1.2 no yes via conversion ctor
  foo((Foo)1, 1); // #1 ok via conv ctor
  foo(f, 2);  // #2 ok
  //foo(b, 3);  // #3 EDG no, GCC 4.1.2 no,  MSVC 8 yes via conv ctor 
  foo((Foo)b, 4); // #4 ok via conv ctor

  bar(1, 5);   // #5 EDG, MSVC 8 no,  GCC 4.1.2 yes
  bar(b, 6);   // #6 ok
  bar(f, 7);   // #7 EDG no,  MSVC 8, GCC 4.1.2 yes
  bar(b, 8); // #8 ok
  bar(f, b);   // #9 ok

  return(0);
}


-- 
   Summary: template friends and Koenig lookup
   Product: gcc
   Version: 4.1.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: andrew dot olson at hughes dot net


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



[Bug fortran/31196] wrong code generated with RESHAPE/TRANSPOSE

2007-03-24 Thread tkoenig at alice-dsl dot net


--- Comment #3 from tkoenig at alice-dsl dot net  2007-03-24 21:35 ---
Created an attachment (id=13278)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13278action=view)
proposed patch

This should fix it.


-- 


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



[patch, libfortran] Fix PR 31196

2007-03-24 Thread Thomas Koenig
:ADDPATCH fortran:

Hello world,

this one-liner fixes PR 31196, where reshape of a
transposed array led to silent wrong results.

Currently regtesting on i686-pc-linux-gnu.  OK for 4.3
if this passes?  OK for 4.2?

Thomas

2007-03-24  Thomas Koenig  [EMAIL PROTECTED]

* intrinsic/reshape_generic.c (reshape_internal):  Increment
correct variable.

! { dg-do run }
! PR 31196 - reshape of transposed derived types generated
!wront results.
program main
  implicit none
  TYPE datatype
 INTEGER :: I
  END TYPE datatype
  character (len=20) line1, line2
  TYPE(datatype), dimension(2,2) :: data, result
  data(1,1)%i = 1
  data(2,1)%i = 2
  data(1,2)%i = 3
  data(2,2)%i = 4
  write (unit=line1, fmt=(4I4)) reshape(transpose(data),shape(data))
  write (unit=line2, fmt=(4I4)) (/ 1, 3, 2, 4 /)
  if (line1 /= line2) call abort
END program main
Index: intrinsics/reshape_generic.c
===
--- intrinsics/reshape_generic.c	(revision 123028)
+++ intrinsics/reshape_generic.c	(working copy)
@@ -266,7 +266,7 @@ reshape_internal (parray *ret, parray *s
   else
 {
   scount[n]++;
-  sptr += sstride[n] * size;
+  src += sstride[n] * size;
 }
 }
 }


[Bug libfortran/31297] Use of uninitialized variables in libgfortran's I/O

2007-03-24 Thread tkoenig at alice-dsl dot net


--- Comment #1 from tkoenig at alice-dsl dot net  2007-03-24 22:17 ---
This is a bug in the test case.

I'll commit a correct version.

Thomas


-- 


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



[Bug testsuite/31240] gfortran.dg/pointer_intent_1.f90 failure at -O0

2007-03-24 Thread dominiq at lps dot ens dot fr


--- Comment #1 from dominiq at lps dot ens dot fr  2007-03-24 22:28 ---
xlf yields a bus error without optimization and -O, and abort with -O3.
g95 gives the following errors:

In file pointer_intent_1.f90:39

  nullify(t%point)
1
Error: Cannot NULLIFY the INTENT(IN) pointer 't' at (1)
In file pointer_intent_1.f90:42

  deallocate(t%point)
 1
Error: Cannot DEALLOCATE INTENT(IN) dummy variable 't' at (1)


-- 


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



[Bug libfortran/31297] Use of uninitialized variables in libgfortran's I/O

2007-03-24 Thread tkoenig at alice-dsl dot net


--- Comment #2 from tkoenig at alice-dsl dot net  2007-03-24 22:44 ---
Created an attachment (id=13279)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13279action=view)
patch for the test cases

All but one of these were errors in the test cases, which are
corrected with this patch.

unf_io_convert_3.f90 is a case where we don't initialize the left-over
bytes when converting.  Hmm... I'll have to look into this some
more.


-- 


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



[Bug middle-end/31337] New: [4.2/4.3 regression] ICE with statement expression

2007-03-24 Thread reichelt at gcc dot gnu dot org
The following valid code snippet triggers an ICE on mainline and 4.2 branch:

===
struct A
{
  int i[0];
  A();
  A(const A);
};

void foo()
{
  A a = ({ A(); });
}
===

bug.cc: In function 'void foo()':
bug.cc:10: internal compiler error: in create_tmp_var, at gimplify.c:488
Please submit a full bug report, [etc.]


-- 
   Summary: [4.2/4.3 regression] ICE with statement expression
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Keywords: ice-on-valid-code, monitored
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: reichelt at gcc dot gnu dot org


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



[Bug middle-end/31337] [4.2/4.3 regression] ICE with statement expression

2007-03-24 Thread reichelt at gcc dot gnu dot org


-- 

reichelt at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|--- |4.2.0


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



[Bug libfortran/31297] Use of uninitialized variables in libgfortran's I/O

2007-03-24 Thread tkoenig at alice-dsl dot net


--- Comment #3 from tkoenig at alice-dsl dot net  2007-03-24 23:07 ---
Created an attachment (id=13280)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13280action=view)
proposed patch

This one also fixes the last case.

It does so by reading size bytes instead of the kind number when
converting endianness.  This makes the buffers initialized, and
also makes sure the number of bytes are the same when
using CONVERT=SWAP or when using the native format.

Not that I really expect anybody to use CONVERT with 10-byte
reals, anyway :-)


-- 

tkoenig at alice-dsl dot net changed:

   What|Removed |Added

  Attachment #13279|0   |1
is obsolete||


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



Re: [patch, libfortran] Fix PR 31196

2007-03-24 Thread FX Coudert

:REVIEWMAIL:


this one-liner fixes PR 31196, where reshape of a
transposed array led to silent wrong results.


Yes, this brings the code in intrinsics/reshape_generic.c in line  
with m4/reshape.m4. What's amusing is that this difference appears to  
go back to the initial merge of code from tree-ssa to mainline. By  
the way, did you audit these two files for other differences? (I try  
to keep them in sync when I change one, but I'm not sure I ever gave  
it a global look.)



2007-03-24  Thomas Koenig  [EMAIL PROTECTED]

* intrinsic/reshape_generic.c (reshape_internal):  Increment
correct variable.


This is OK for mainline.

As for 4.2: it's not a regression, but it's a silent wrong-code bug,  
and those are always nasty; it's not in a very exposed part of the  
library, though (character transpose is probably not the most used  
feature of gfortran), and it's not risky at all, since it's both very  
short and known to be correctly working in m4/reshape.m4 for years.  
So, all considered, I think it's worthy to have in 4.2. I'm not sure  
whether a mail to Mark M. is needed; if, when you want to commit, the  
4.2 branch is still documented as stage 3, I think maintainer  
approval is enough. But please let at least a few days for others to  
object/argue before commiting to 4.2.


Thanks,
FX


[Bug c++/31338] New: [4.1/4.2/4.3 regression] Cannot apply ! to complex constants

2007-03-24 Thread reichelt at gcc dot gnu dot org
The following IMHO valid code snippet is rejected since GCC 3.4.0:

===
bool b = !0i;
===

bug.cc:1: error: could not convert '#'complex_cst' not supported by
dump_expr#expression error' to 'bool'
bug.cc:1: error: in argument to unary !

The C front-end accepts complex constants as argument to !.
This is related to PR30209.

Btw, the fact that dump_expr cannot handle complex_cst is already
tracked in PR 30896.


-- 
   Summary: [4.1/4.2/4.3 regression] Cannot apply ! to complex
constants
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Keywords: rejects-valid, monitored
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: reichelt at gcc dot gnu dot org
 BugsThisDependsOn: 30209


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



[Bug c++/31338] [4.1/4.2/4.3 regression] Cannot apply ! to complex constants

2007-03-24 Thread reichelt at gcc dot gnu dot org


-- 

reichelt at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|--- |4.1.3


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



[Bug middle-end/31339] New: [4.3 regression] ICE on invalid use of complex constant

2007-03-24 Thread reichelt at gcc dot gnu dot org
The following invalid code snippet triggers an ICE on mainline:

===
bool b = --0i == 0;
===

bug.cc:1: error: lvalue required as decrement operand
bug.cc:1: internal compiler error: tree check: expected class 'type', have
'exceptional' (error_mark) in fold_comparison, at fold-const.c:8459
Please submit a full bug report, [etc.]


-- 
   Summary: [4.3 regression] ICE on invalid use of complex constant
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Keywords: ice-on-invalid-code, error-recovery, monitored
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: reichelt at gcc dot gnu dot org


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



[Bug middle-end/31339] [4.3 regression] ICE on invalid use of complex constant

2007-03-24 Thread reichelt at gcc dot gnu dot org


-- 

reichelt at gcc dot gnu dot org changed:

   What|Removed |Added

   Target Milestone|--- |4.3.0


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



[Bug c/31340] New: testsuite setjmp-3 and setjmp-4 fail attempting to redefine raise

2007-03-24 Thread tprince at computer dot org
signal.h is in scope when gcc.dg/setjmp-3.c and setjmp-4.c are compiled.  The
attempt to redefine raise() causes the tests to fail.  Either this should be an
XFAIL, or the test should be changed so as to remove the conflict with
pre-existing definition.  The definition in the testsuite conflicts with Open
Group specification
http://www.opengroup.org/onlinepubs/95399/functions/raise.html


-- 
   Summary: testsuite setjmp-3 and setjmp-4 fail attempting to
redefine raise
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tprince at computer dot org
 GCC build triplet: i686-pc-cygwin
  GCC host triplet: i686-pc-cygwin
GCC target triplet: i686-pc-cygwin


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



[Bug c/31341] New: testsuite pr31041.c fails conflicting with stdint.h

2007-03-24 Thread tprince at computer dot org
gcc.dg/vect/pr31041 attempts to redefine int32_t while stdint.h is in scope,
so test reports FAIL.  Is this the intent of the test?


-- 
   Summary: testsuite pr31041.c fails conflicting with stdint.h
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tprince at computer dot org
 GCC build triplet: i686-pc-cygwin
  GCC host triplet: i686-pc-cygwin
GCC target triplet: i686-pc-cygwin


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



[Bug c/31342] New: testsuite i386/pic-1.c FAILed for warning -fPIC ignored

2007-03-24 Thread tprince at computer dot org
This case issues the warning -fPIC ignored and is FAILed on account of it.


-- 
   Summary: testsuite i386/pic-1.c FAILed for warning -fPIC ignored
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tprince at computer dot org
 GCC build triplet: i686-pc-cygwin
  GCC host triplet: i686-pc-cygwin
GCC target triplet: i686-pc-cygwin


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



[Bug testsuite/31340] testsuite setjmp-3 and setjmp-4 fail attempting to redefine raise

2007-03-24 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-03-25 08:11 ---
The name of the function should be changed, it is just a local function name
anyways.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

  Component|c   |testsuite


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



[Bug middle-end/31339] [4.3 regression] ICE on invalid use of complex constant

2007-03-24 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-03-25 08:21 ---
  if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (arg0))

I think we are just checking TYPE_OVERFLOW_UNDEFINED too early.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||ian at gcc dot gnu dot org


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



[Bug c++/31337] [4.2/4.3 regression] ICE with statement expression

2007-03-24 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-03-25 08:46 ---
This is a front-end issue:
  cleanup_point  Unknown tree: expr_stmt
  (void) (a = TARGET_EXPR D.2077, cleanup_point TARGET_EXPR D.2076, 
Unknown tree: aggr_init_expr
  4
  __comp_ctor
  D.2076
  0B 
) 


We have a cleanup_point expression which causes an extra variable to be created
but since the type is addressable, we abort.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
  Component|middle-end  |c++
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2007-03-25 07:46:59
   date||


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