[Bug target/17390] missing floating point compare optimization

2007-08-23 Thread ubizjak at gmail dot com


--- Comment #14 from ubizjak at gmail dot com  2007-08-23 08:33 ---
Patch at http://gcc.gnu.org/ml/gcc-patches/2007-08/msg01513.html.

This is target-only patch that fakes fcomi instructions. It doesn't need to
rescan insn stream and creates the same output as in Comment #8. It also
doesn't ice for the testcase in Comment #10.


-- 

ubizjak at gmail dot com changed:

   What|Removed |Added

URL|http://gcc.gnu.org/ml/gcc-  |http://gcc.gnu.org/ml/gcc-
   |patches/2005-   |patches/2007-
   |10/msg01298.html|08/msg01513.html


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



[Bug tree-optimization/33154] FAIL: gcc.c-torture/execute/20010119-1.c compilation, -Os

2007-08-23 Thread rguenth at gcc dot gnu dot org


--- Comment #2 from rguenth at gcc dot gnu dot org  2007-08-23 08:56 ---
Indeed.


-- 


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



[Bug c++/33156] preprocessor precedence of string concatenation backwards?

2007-08-23 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-08-23 09:33 ---
IIRC # processing happens first before string concatenation.


-- 


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



maybe bug regarding intptr_t and NULL

2007-08-23 Thread Cedric Roux

Hi GCC people,

the following code gives me a warning when compiling
(on an IA32 host).

~/c/tests 37> cat intptr.cpp
#include "stdint.h"
#include "stdlib.h"

int main(void)
{
 intptr_t t = 0;
 if (t != ((intptr_t)NULL)) t = 1;
 return 0;
}

lnxsodt25 ~/c/tests 38> g++ --version
g++ (GCC) 4.2.1

lnxsodt25 ~/c/tests 39> g++ -c intptr.cpp
intptr.cpp: In function 'int main()':
intptr.cpp:7: warning: NULL used in arithmetic

If I use uintptr_t, gcc gives no warning.
After reading cp/typeck.c around build_binary_op
and knowing that NULL is in fact null_node
with type integer (integer_type_node I think),
I guess that the cast is removed in some way
so that build_binary_op produces a warning
believing I pass NULL as is, without the cast.

Of course I could use uintptr_t and everything
would be fine, but it's not my own code.

Or I might also misunderstand something
in there in which case I apologize for this
email.

Take care,
and keep on the good work on this great compiler.

Cedric.


[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956

2007-08-23 Thread bonzini at gnu dot org


--- Comment #10 from bonzini at gnu dot org  2007-08-23 10:18 ---
fixed?


-- 


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



[Bug fortran/33095] MAX with optional arguments gives run-time error

2007-08-23 Thread fxcoudert at gcc dot gnu dot org


--- Comment #3 from fxcoudert at gcc dot gnu dot org  2007-08-23 10:22 
---
Subject: Bug 33095

Author: fxcoudert
Date: Thu Aug 23 10:22:18 2007
New Revision: 127732

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127732
Log:
PR fortran/33095

* trans-intrinsic.c (gfc_conv_intrinsic_minmax): Remove
runtime error checking.

* gfortran.dg/min_max_optional_5.f90: New test.
* gfortran.dg/min_max_optional_2.f90: Remove.
* gfortran.dg/min_max_optional_3.f90: Remove.
* gfortran.dg/min_max_optional_4.f90: Remove.

Added:
trunk/gcc/testsuite/gfortran.dg/min_max_optional_5.f90
Removed:
trunk/gcc/testsuite/gfortran.dg/min_max_optional_2.f90
trunk/gcc/testsuite/gfortran.dg/min_max_optional_3.f90
trunk/gcc/testsuite/gfortran.dg/min_max_optional_4.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/trans-intrinsic.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug fortran/33095] MAX with optional arguments gives run-time error

2007-08-23 Thread fxcoudert at gcc dot gnu dot org


--- Comment #4 from fxcoudert at gcc dot gnu dot org  2007-08-23 10:22 
---
Fixed.


-- 

fxcoudert at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


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



[Bug middle-end/33157] New: [4.3 Regression] cmov4.c fails on i686

2007-08-23 Thread bonzini at gnu dot org
The failure was not detected because of an incorrect scan-assembler pattern.


-- 
   Summary: [4.3 Regression] cmov4.c fails on i686
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bonzini at gnu dot org


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



[Bug tree-optimization/33158] New: missed store sinking opportunity

2007-08-23 Thread bonzini at gnu dot org
In gcc.target/i386/cmov4.c no store sinking is performed for this code

  for (i = 0; i < ARCHnodes; i++) {
nodekind[i] = (int) nodekindf[i];
if (nodekind[i] == 3)
  nodekind[i] = 1;
  }

I would expect it to be rewritten as

  for (i = 0; i < ARCHnodes; i++) {
int x = (int) nodekindf[i];
if (x == 3)
  x = 1;
nodekind[i] = x;
  }


-- 
   Summary: missed store sinking opportunity
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Keywords: missed-optimization
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bonzini at gnu dot org
OtherBugsDependingO 33157
 nThis:


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



[Bug tree-optimization/33159] New: [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c

2007-08-23 Thread bonzini at gnu dot org
The testcase looks like this:

int *nodekind;
float *nodekindf;
...

  for (i = 0; i < ARCHnodes; i++) {
nodekind[i] = (int) nodekindf[i];   /* <<< */
if (nodekind[i] == 3)
  nodekind[i] = 1;
  }

In the marked statement, the nodekind variable gets a new VDEF, which is wrong:

  D.2012_13 = (int) D.2011_12;
  # ARCHnodes_36 = VDEF 
  # nodekind_37 = VDEF 
  # nodekindf_38 = VDEF 
  # SMT.8_39 = VDEF 
  *D.2008_7 = D.2012_13;


-- 
   Summary: [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bonzini at gnu dot org
OtherBugsDependingO 33158
 nThis:


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



[Bug tree-optimization/33158] missed store sinking opportunity

2007-08-23 Thread bonzini at gnu dot org


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

  BugsThisDependsOn|33159   |
 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2007-08-23 10:27:48
   date||


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



[Bug middle-end/33157] [4.3 Regression] cmov4.c fails on i686

2007-08-23 Thread bonzini at gnu dot org


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2007-08-23 10:28:09
   date||


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



[Bug middle-end/33157] [4.3 Regression] cmov4.c fails on i686

2007-08-23 Thread rguenth at gcc dot gnu dot org


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 GCC target triplet||i?86-*-*
   Target Milestone|--- |4.3.0


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



[Bug c++/33160] New: wrong "NULL used in arithmetic" warning

2007-08-23 Thread bonzini at gnu dot org
typedef int __attribute__((mode(pointer))) intptr_t;
int main(void)
{
 intptr_t t = 0;
 if (t != ((intptr_t)__null)) t = 1;
 return 0;
}

sss.cc: In function 'int main()':
sss.cc:5: warning: NULL used in arithmetic


-- 
   Summary: wrong "NULL used in arithmetic" warning
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Keywords: diagnostic
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bonzini at gnu dot org


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



[Bug c++/33160] wrong "NULL used in arithmetic" warning

2007-08-23 Thread bonzini at gnu dot org


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
  Known to fail||4.1.3 4.3.0
   Last reconfirmed|-00-00 00:00:00 |2007-08-23 10:46:57
   date||


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



[Bug c/30428] vector float | vector float is accepted

2007-08-23 Thread tbptbp at gmail dot com


--- Comment #6 from tbptbp at gmail dot com  2007-08-23 11:01 ---
(In reply to comment #5)
> Fixed.
Please fix the extension documentation accordingly.


-- 

tbptbp at gmail dot com changed:

   What|Removed |Added

 CC||tbptbp at gmail dot com


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



[Bug c++/33161] New: Undefined symbols at link for referenced static const data member

2007-08-23 Thread sylvain dot pion at sophia dot inria dot fr
Compiling the following program, with "g++ A.cpp" fails to link
with the following error message :
/tmp/ccehheUK.o:(.rodata+0x0): undefined reference to `A::x'
collect2: ld returned 1 exit status

 
struct A {
  static const int x = 0;
};

const int & i = A::x;

int main() {}


It can be reproduced with g++ versions ranging from 3.2 to 4.3,
on Linux and Darwin.

Note that changing one "int" to "unsigned" makes it pass.

Is this really expected to fail ?


-- 
   Summary: Undefined symbols at link for referenced static const
data member
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: sylvain dot pion at sophia dot inria dot fr
  GCC host triplet: i386-redhat-linux


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



[Bug tree-optimization/33136] [4.1/4.2/4.3 Regression] wrong code due to alias with allocation in loop

2007-08-23 Thread jakub at gcc dot gnu dot org


--- Comment #16 from jakub at gcc dot gnu dot org  2007-08-23 12:13 ---
But doesn't ipa_type_escape_field_does_not_clobber_p do what is documented?
At least for the uses in nonoverlapping_memrefs_p where
ipa_type_escape_field_does_not_clobber_p is always called on some field, first
argument is a DECL_FIELD_CONTEXT of some field ans second argument is its type.
Then IMHO ipa_type_escape_field_does_not_clobber_p does the right thing.
If you take address of the whole struct rather than some specific field and
that address doesn't escape the CU, then that still doesn't explain how
could a pointer var with first field's type point to the struct.  Say for
struct A { int i; float f; } you still need (int *) ptrA where ptrA is
struct A *, or &ptrA->i.  Optimizations before ipa-type-escape will transform
the former to the latter and if they don't, I believe check_cast will handle
it anyway.  The only problem in alias.c might be if exprx is COMPONENT_REF
of the first field and expry is a var pointer to the whole struct A (or vice
versa), then any taking of address of the whole struct anywhere would mean
the MEMs could overlap.  But in that case both MEMs will have different alias
sets, don't they?

The ipa_type_escape_field_does_not_clobber_p call in may_alias_p is very
different though.  Here we don't necessarily call it with some record (or
union)
type and a type of one of its fields, but rather with some record type (or
pointer to it, pointer to pointer etc.) and some possibly completely unrelated
other pointer type.  Well, because of previous
if (!alias_sets_conflict_p (mem_alias_set, var_alias_set)) return false;
it shouldn't be completely unrelated.  In most cases it will actually be the
same
type and that's something ipa_type_escape_field_does_not_clobber_p wasn't
meant to answer.  I have instrumented may_alias_p, so that if
ipa_type_escape_field_does_not_clobber_p returned false for reasons other than
!initialized or !ipa_type_escape_type_contained_p, it would abort.
The only testcase in the whole make check-{gcc,g++,gfortran} testsuite
triggering this was gcc.c-torture/execute/builtins/pr22237.c, where var had a
union type which contained ptr's type as one of its subfields.

The whole use of ipa_type_escape_field_does_not_clobber_p in may_alias_p
is very much unclear to me.
E.g.:
  else if (ptr_star_count == 0)
{
  /* If PTR_TYPE was not really a pointer to type, it cannot
 alias.  */
  alias_stats.structnoaddress_queries++;
  alias_stats.structnoaddress_resolved++;
  alias_stats.alias_noalias++;
  return false;
}
Isn't ptr guaranteed to be have POINTER_TYPE or REFERENCE_TYPE?  Both from the
way how is ->pointers array populated and e.g. that PTR_IS_REF_ALL is used
before may_alias_p on the p_map->var resp. p_map1->var?  That implies
ptr_star_count > 0, so the above listed chunk is never executed.  Also, as
we don't care in the code whether ptr_star_count is 37 or just 1, I don't see
the point in computing ptr_star_count at all, nor the existence of ptr_type
variable.

If ipa_type_escape_star_count_of_interesting_type (var_type) > 0 (i.e. var is
a pointer to struct/union rather than struct/union itself, how is the fact that
something took address of fields within the struct itself relevant to whether
some pointer may point to the pointer var or not?  If
ipa_type_escape_star_count_of_interesting_type (var_type) == 0, then
ipa_type_escape_field_does_not_clobber_p call would make sense if ptr was
a pointer to some field (field of field etc.), but then it needs to be called
with TREE_TYPE (TREE_TYPE (ptr)) as second argument, otherwise it is asking
a wrong question.  But if ptr's type is the struct/union itself, all we care is
if that record/union's address has been taken, which is not something
ipa-type-escape won't answer.  Isn't that what TREE_ADDRESSABLE can be used
for?

Please explain.


-- 


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



[Bug rtl-optimization/32557] [4.3 Regression] internal compiler error: RTL check: expected code 'reg', have 'subreg' in rhs_regno, at rtl.h:956

2007-08-23 Thread rask at gcc dot gnu dot org


--- Comment #11 from rask at gcc dot gnu dot org  2007-08-23 12:18 ---
I don't know if it has been fixed on powerpc64-suse-linux-gnu yet.


-- 


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



[Bug c/32295] [4.1/4.2/4.3 Regression] An invalid c code causes an ICE in create_tmp_var, at gimplify.c:489

2007-08-23 Thread jakub at gcc dot gnu dot org


--- Comment #3 from jakub at gcc dot gnu dot org  2007-08-23 12:38 ---
Another testcase:
extern enum warn overflow;
int
foo (void)
{
  return overflow;
}

Here 3.4.x silently compiled it and used SImode for the variable, eventhough
TYPE_SIZE on the enum warn type nor DECL_SIZE on overflow DECL_EXTERNAL
variable
was set.


-- 


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



[Bug tree-optimization/32328] [4.2 Regression] -fstrict-aliasing causes skipped code

2007-08-23 Thread rguenth at gcc dot gnu dot org


--- Comment #24 from rguenth at gcc dot gnu dot org  2007-08-23 12:42 
---
Subject: Bug 32328

Author: rguenth
Date: Thu Aug 23 12:41:59 2007
New Revision: 127736

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127736
Log:
2007-08-23  Richard Guenther  <[EMAIL PROTECTED]>

PR tree-optimization/32328
* testsuite/gcc.dg/pr32328.c: New testcase.

Added:
trunk/gcc/testsuite/gcc.dg/pr32328.c
Modified:
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug tree-optimization/32772] [4.3 Regression] error: found real variable when subvariables should have appeared

2007-08-23 Thread rguenth at gcc dot gnu dot org


--- Comment #10 from rguenth at gcc dot gnu dot org  2007-08-23 12:43 
---
The testcase is not fixed and you didn't add a testcase.


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|FIXED   |


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



[Bug libfortran/23138] [mingw32] real(16) values are printed incorrectly

2007-08-23 Thread fxcoudert at gcc dot gnu dot org


--- Comment #16 from fxcoudert at gcc dot gnu dot org  2007-08-23 13:03 
---
Subject: Bug 23138

Author: fxcoudert
Date: Thu Aug 23 13:03:35 2007
New Revision: 127739

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127739
Log:
PR libfortran/23138
* acinclude.m4 (LIBGFOR_CHECK_MINGW_SNPRINTF): New check.
* configure.ac: Use LIBGFOR_CHECK_MINGW_SNPRINTF.
* libgfortran.h: If HAVE_MINGW_SNPRINTF is true, use __mingw_snprintf
instead of snprintf.
* config.h.in: Regenerate.
* configure: Regenerate.

Modified:
trunk/libgfortran/ChangeLog
trunk/libgfortran/acinclude.m4
trunk/libgfortran/config.h.in
trunk/libgfortran/configure
trunk/libgfortran/configure.ac
trunk/libgfortran/libgfortran.h


-- 


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



[Bug c++/31941] [4.1/4.2/4.3 Regression] "confused by earlier errors" message without earlier error message

2007-08-23 Thread jakub at gcc dot gnu dot org


-- 

jakub at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |jakub at gcc dot gnu dot org
   |dot org |
 Status|UNCONFIRMED |ASSIGNED
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2007-08-23 13:16:07
   date||


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



[Bug tree-optimization/33154] FAIL: gcc.c-torture/execute/20010119-1.c compilation, -Os

2007-08-23 Thread danglin at gcc dot gnu dot org


--- Comment #3 from danglin at gcc dot gnu dot org  2007-08-23 13:25 ---
Fixed.


-- 

danglin at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED


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



[Bug tree-optimization/33136] [4.1/4.2/4.3 Regression] wrong code due to alias with allocation in loop

2007-08-23 Thread dberlin at dberlin dot org


--- Comment #17 from dberlin at gcc dot gnu dot org  2007-08-23 13:45 
---
Subject: Re:  [4.1/4.2/4.3 Regression] wrong code due to alias with allocation
in loop

On 23 Aug 2007 12:13:13 -, jakub at gcc dot gnu dot org
<[EMAIL PROTECTED]> wrote:
>
>
> --- Comment #16 from jakub at gcc dot gnu dot org  2007-08-23 12:13 
> ---
> But doesn't ipa_type_escape_field_does_not_clobber_p do what is documented?

I was there when it was written. It may be documented to do one thing,
but the intent was to do another :)

> At least for the uses in nonoverlapping_memrefs_p where
> ipa_type_escape_field_does_not_clobber_p is always called on some field, first
> argument is a DECL_FIELD_CONTEXT of some field ans second argument is its 
> type.
> Then IMHO ipa_type_escape_field_does_not_clobber_p does the right thing.
It doesn't.
> If you take address of the whole struct rather than some specific field and
> that address doesn't escape the CU, then that still doesn't explain how
> could a pointer var with first field's type point to the struct.

> Say for
> struct A { int i; float f; } you still need (int *) ptrA

Uh, no.

&ptrA will do just fine. You can clobber all fields through it if it escapes.

>
> The ipa_type_escape_field_does_not_clobber_p call in may_alias_p is very
> different though.  Here we don't necessarily call it with some record (or
> union)
> type and a type of one of its fields, but rather with some record type (or
> pointer to it, pointer to pointer etc.) and some possibly completely unrelated
> other pointer type.  Well, because of previous
> if (!alias_sets_conflict_p (mem_alias_set, var_alias_set)) return false;
> it shouldn't be completely unrelated.  In most cases it will actually be the
> same
> type and that's something ipa_type_escape_field_does_not_clobber_p wasn't
> meant to answer.  I have instrumented may_alias_p, so that if
> ipa_type_escape_field_does_not_clobber_p returned false for reasons other than
> !initialized or !ipa_type_escape_type_contained_p, it would abort.
> The only testcase in the whole make check-{gcc,g++,gfortran} testsuite
> triggering this was gcc.c-torture/execute/builtins/pr22237.c, where var had a
> union type which contained ptr's type as one of its subfields.
>
> The whole use of ipa_type_escape_field_does_not_clobber_p in may_alias_p
> is very much unclear to me.

The whole *point* of ipa_type_escape was to be used in may_alias_p.
The use in alias.c was actually an afterthought.

> E.g.:
>   else if (ptr_star_count == 0)
> {
>   /* If PTR_TYPE was not really a pointer to type, it cannot
>  alias.  */
>   alias_stats.structnoaddress_queries++;
>   alias_stats.structnoaddress_resolved++;
>   alias_stats.alias_noalias++;
>   return false;
> }
> Isn't ptr guaranteed to be have POINTER_TYPE or REFERENCE_TYPE?

yes.

> Both from the
> way how is ->pointers array populated and e.g. that PTR_IS_REF_ALL is used
> before may_alias_p on the p_map->var resp. p_map1->var?  That implies
> ptr_star_count > 0, so the above listed chunk is never executed.

Also true.
> Also, as
> we don't care in the code whether ptr_star_count is 37 or just 1, I don't see
> the point in computing ptr_star_count at all, nor the existence of ptr_type
> variable.
>
> If ipa_type_escape_star_count_of_interesting_type (var_type) > 0 (i.e. var is
> a pointer to struct/union rather than struct/union itself, how is the fact 
> that
> something took address of fields within the struct itself relevant to whether
> some pointer may point to the pointer var or not?

If the address was never taken anywhere, it can't be pointed to.
Type-escape tries to go a little further, and see if, when the address
of a field is taken, if that address is ever cast'd,
incremented/decremented, or escapes.  If not, then only that field is
clobbbered, not the entire structure.  Otherwise, it is equivalent to
calculating TREE_ADDRESSABLE.

The other part of type-escape was to see if the address ever actually
escapes the CU, because if it does not, it could be transformed by
struct-reorg.

>   If
> ipa_type_escape_star_count_of_interesting_type (var_type) == 0, then
> ipa_type_escape_field_does_not_clobber_p call would make sense if ptr was
> a pointer to some field (field of field etc.), but then it needs to be called
> with TREE_TYPE (TREE_TYPE (ptr)) as second argument, otherwise it is asking
> a wrong question.

Also possible.  Kenny is not always good at knowing the intricacies of
our compiler.

> Please explain.


-- 


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



[Bug tree-optimization/32772] [4.3 Regression] error: found real variable when subvariables should have appeared

2007-08-23 Thread dberlin at gcc dot gnu dot org


--- Comment #11 from dberlin at gcc dot gnu dot org  2007-08-23 13:45 
---
It did not fail for me at the point i committed the patch.


-- 


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



[Bug tree-optimization/33159] [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c

2007-08-23 Thread dberlin at gcc dot gnu dot org


--- Comment #1 from dberlin at gcc dot gnu dot org  2007-08-23 13:48 ---
I'm not sure what you are talking about. Do you mean nodekindf?
Do you have a case i can compile on another platform?


-- 


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



[Bug tree-optimization/33159] [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c

2007-08-23 Thread bonzini at gnu dot org


--- Comment #2 from bonzini at gnu dot org  2007-08-23 13:55 ---
The testcase is cross-platform (at least as far as this PR and PR33158 are
concerned).

Of the four VDEFs, only the ones for SMT.8 and ARCHnodes seem correct to me. 
The "int" assignment should not cause aliasing for either the nodekind global
(an "int *") or nodekindf (a "float *").


-- 


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



[Bug tree-optimization/33159] [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c

2007-08-23 Thread dberlin at dberlin dot org


--- Comment #3 from dberlin at gcc dot gnu dot org  2007-08-23 14:01 ---
Subject: Re:  [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c

On 23 Aug 2007 13:55:21 -, bonzini at gnu dot org
<[EMAIL PROTECTED]> wrote:
>
>
> --- Comment #2 from bonzini at gnu dot org  2007-08-23 13:55 ---
> The testcase is cross-platform (at least as far as this PR and PR33158 are
> concerned).
>
> Of the four VDEFs, only the ones for SMT.8 and ARCHnodes seem correct to me.
> The "int" assignment should not cause aliasing for either the nodekind global
> (an "int *") or nodekindf (a "float *").

Uh, it's a store into an int *.
Thus it could touch nodekind.
nodekindf it can't, and i'll see what is up there.


-- 


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



[Bug tree-optimization/33159] [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c

2007-08-23 Thread bonzini at gnu dot org


--- Comment #4 from bonzini at gnu dot org  2007-08-23 14:04 ---
Hmmm, a store into an "int *" could not touch nodekind itself, only a store
into an "int **" could.

Isn't SMT.8 the VDEF saying it could touch *the thing pointed to by nodekind*?


-- 


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



[Bug tree-optimization/33159] [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c

2007-08-23 Thread dberlin at dberlin dot org


--- Comment #5 from dberlin at gcc dot gnu dot org  2007-08-23 14:05 ---
Subject: Re:  [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c

On 8/23/07, Daniel Berlin <[EMAIL PROTECTED]> wrote:
> On 23 Aug 2007 13:55:21 -, bonzini at gnu dot org
> <[EMAIL PROTECTED]> wrote:
> >
> >
> > --- Comment #2 from bonzini at gnu dot org  2007-08-23 13:55 ---
> > The testcase is cross-platform (at least as far as this PR and PR33158 are
> > concerned).
> >
> > Of the four VDEFs, only the ones for SMT.8 and ARCHnodes seem correct to me.
> > The "int" assignment should not cause aliasing for either the nodekind 
> > global
> > (an "int *") or nodekindf (a "float *").
>
> Uh, it's a store into an int *.
> Thus it could touch nodekind.
> nodekindf it can't, and i'll see what is up there.
>

On my platform, i get
  # ARCHnodes_33 = VDEF 
  # SMT.8_34 = VDEF 
  *D.1997_7 = D.2001_13;

Which seems to be what you wanted.  I'm not sure what you are testing
on, or what version.


-- 


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



Re: [Bug tree-optimization/33159] [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c

2007-08-23 Thread Daniel Berlin
Yes, you are right.
I wasn't thinking clearly

> --- Comment #4 from bonzini at gnu dot org  2007-08-23 14:04 ---
> Hmmm, a store into an "int *" could not touch nodekind itself, only a store
> into an "int **" could.
>
> Isn't SMT.8 the VDEF saying it could touch *the thing pointed to by nodekind*?
>


[Bug tree-optimization/33159] [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c

2007-08-23 Thread dberlin at dberlin dot org


--- Comment #6 from dberlin at gcc dot gnu dot org  2007-08-23 14:09 ---
Subject: Re:  [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c

Yes, you are right.
I wasn't thinking clearly

> --- Comment #4 from bonzini at gnu dot org  2007-08-23 14:04 ---
> Hmmm, a store into an "int *" could not touch nodekind itself, only a store
> into an "int **" could.
>
> Isn't SMT.8 the VDEF saying it could touch *the thing pointed to by nodekind*?
>


-- 


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



[Bug middle-end/20644] bogus uninitialized warning on unused variable

2007-08-23 Thread manu at gcc dot gnu dot org


--- Comment #9 from manu at gcc dot gnu dot org  2007-08-23 14:17 ---
(In reply to comment #8)
> Despite what I said before, for this particular case, we should never give a
> "is used" warning if the BB is not executed with 100% probability. Hmm, I'll
> check whether we can detect this.

We could avoid the warning by doing the following:

--- gcc/tree-ssa.c  (revision 126606)
+++ gcc/tree-ssa.c  (working copy)
@@ -1302,8 +1334,11 @@
}
 }

static unsigned int
execute_early_warn_uninitialized (void)
 {
  block_stmt_iterator bsi;
  basic_block bb;

  FOR_EACH_BB (bb)
-for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
-  {
-   tree context = bsi_stmt (bsi);
-   walk_tree (bsi_stmt_ptr (bsi), warn_uninitialized_var,
-  context, NULL);
-  }
+{
+  edge e;
+  edge_iterator ei;
+  FOR_EACH_EDGE (e, ei, bb->preds)
+if (e->flags & EDGE_FALLTHRU)
+  {
+for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
+  {
+tree context = bsi_stmt (bsi);
+walk_tree (bsi_stmt_ptr (bsi), warn_uninitialized_var,
+   context, NULL);
+  }
+break;
+  }
+}


I think this is the "Right Thing To Do". Otherwise, we are giving "is used"
warnings for BBs that are conditionally executed. On the other hand, we will
miss a few of the correct warnings that we get by chance by not doing the
"Right Thing".

Comments?


-- 


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



[Bug target/17390] missing floating point compare optimization

2007-08-23 Thread uros at gcc dot gnu dot org


--- Comment #15 from uros at gcc dot gnu dot org  2007-08-23 14:23 ---
Subject: Bug 17390

Author: uros
Date: Thu Aug 23 14:23:40 2007
New Revision: 127742

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127742
Log:
PR target/17390
* config/i386/i386.c (ix86_expand_fp_compare): Expand fp comparison to
fake fcomi i387 instruction for !TARGET_CMOVE.
(ix86_expand_branch): Expand natural sequence with one jump for
all targets, not only TARGET_CMOVE.
* config/i386/i386.md (*cmpfp_0_cc): New define_insn_and_split
pattern to implement fake fcomi sequence.  Split instruction after
reload to correct compare sequences.
(*cmpfp_xf_cc): Ditto.
(*cmpfp__cc): Ditto.
(*cmpfp_u_cc): Ditto.
(*cmpfp__cc): Ditto.

testsuite/ChangeLog:

PR target/17390
* gcc.target/i386/pr17390.c: New test.


Added:
trunk/gcc/testsuite/gcc.target/i386/pr17390.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/i386.c
trunk/gcc/config/i386/i386.md
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug target/17390] missing floating point compare optimization

2007-08-23 Thread ubizjak at gmail dot com


--- Comment #16 from ubizjak at gmail dot com  2007-08-23 14:26 ---
Fixed.


-- 

ubizjak at gmail dot com changed:

   What|Removed |Added

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


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



[Bug tree-optimization/33159] [4.3 Regression] wrong VDEF for gcc.target/i386/cmov4.c

2007-08-23 Thread bonzini at gnu dot org


--- Comment #7 from bonzini at gnu dot org  2007-08-23 14:26 ---
-O does not enable strict-aliasing, invalid


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug middle-end/29749] [4.0/4.1/4.2/4.3 regression] Missing byte swap optimizations

2007-08-23 Thread ubizjak at gmail dot com


--- Comment #8 from ubizjak at gmail dot com  2007-08-23 14:28 ---
(In reply to comment #7)
> Created an attachment (id=13911)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13911&action=view) [edit]
> Updated patch with test case a bug fix.
> 
> I've added a test case of the changes. It did find a bug in the patch and I've
> fixed that. I did a full bootstap and C/C++/ObjC dejagnu with top of 
> 4.2-branch
> as of 20070713 and had no problem.

Any news with this patch?


-- 


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



[Bug tree-optimization/33136] [4.1/4.2/4.3 Regression] wrong code due to alias with allocation in loop

2007-08-23 Thread jakub at redhat dot com


--- Comment #18 from jakub at redhat dot com  2007-08-23 14:49 ---
Subject: Re:  [4.1/4.2/4.3 Regression] wrong code due to alias with allocation
in loop

On Thu, Aug 23, 2007 at 01:45:11PM -, dberlin at dberlin dot org wrote:
> > If you take address of the whole struct rather than some specific field and
> > that address doesn't escape the CU, then that still doesn't explain how
> > could a pointer var with first field's type point to the struct.
> 
> > Say for
> > struct A { int i; float f; } you still need (int *) ptrA
> 
> Uh, no.
> 
> &ptrA will do just fine. You can clobber all fields through it if it escapes.

See "that address doesn't escape the CU" above I wrote.  But if so,
it will be in global_types_full_escape and so 
ipa_type_escape_field_does_not_clobber_p will return false.

> > If ipa_type_escape_star_count_of_interesting_type (var_type) > 0 (i.e. var 
> > is
> > a pointer to struct/union rather than struct/union itself, how is the fact 
> > that
> > something took address of fields within the struct itself relevant to 
> > whether
> > some pointer may point to the pointer var or not?
> 
> If the address was never taken anywhere, it can't be pointed to.
> Type-escape tries to go a little further, and see if, when the address
> of a field is taken, if that address is ever cast'd,
> incremented/decremented, or escapes.  If not, then only that field is
> clobbbered, not the entire structure.  Otherwise, it is equivalent to
> calculating TREE_ADDRESSABLE.

I was talking about say
struct S { int i; float f; struct S **s1; struct S ***s2; struct S s3; };
struct S ***var;
struct S ptr;

If we are asking whether
may_alias (ptr, get_alias_set (TREE_TYPE (TREE_TYPE (ptr))), var, get_alias_set
(var), false)
then we are only interested in whether var is TREE_ADDRESSABLE,
and this is IMHO exactly the same as asking in case of:
void ***var;
void ptr;

But in the former case ipa_type_escape_star_count_of_interesting_type
(var_type) == 3 and so we will call
ipa_type_escape_field_does_not_clobber_p, in the latter case
not.  How are these two different?

In the c#8 testcase this is similar,
ipa_type_escape_star_count_of_interesting_type (var_type) == 1,
we have
struct S *var;
struct S **ptr;
again, why does it matter if *var is a struct or not?  What matters
is if var is TREE_ADDRESSABLE, if there is no &var, then it can't
point to it, otherwise it can.  The same as for
void *var;
void **ptr;

But if var isn't TREE_ADDRESSABLE, I'd bet nothing ever calls
may_alias_p with it as third argument.

So, do you agree the only case may_alias_p should handle with
ipa_type_escape_field_does_not_clobber_p is
ipa_type_escape_star_count_of_interesting_type (var_type) == 0 ?

Jakub


-- 


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



[Bug tree-optimization/21596] [4.0/4.1/4.2/4.3 Regression] extra temporaries when using global register variables

2007-08-23 Thread rguenth at gcc dot gnu dot org


--- Comment #12 from rguenth at gcc dot gnu dot org  2007-08-23 16:14 
---
So, on the mainline we now generate wrong-code?!


-- 

rguenth at gcc dot gnu dot org changed:

   What|Removed |Added

   Keywords||wrong-code


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



[Bug fortran/33162] New: Type checking absent for specific names of INTRINSIC functions

2007-08-23 Thread burnus at gcc dot gnu dot org
Example:
  print *, dcos(1.0)
  print *, dcos(1d0)

gfortran treats them as it does with "cos()": Any kind of REAL is accepted.
However, DCOS is a specific name of COS which only accepts REAL(8).

The bug should be fixed such that the following works as well:

PROCEDURE(DCOS):: my1
PROCEDURE(COS) :: my2

"MY1" is a function with the interface:
  interface
double precision function my1(x)
  double precision, intent(in) :: x
end function my1
  end interface
(Note especially also the intent(in) and the dummy argument "x".)

"MY1" takes the interface from the specific name of COS: Only REAL(4) is
accepted.


-- 
   Summary: Type checking absent for specific names of INTRINSIC
functions
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Keywords: accepts-invalid
  Severity: normal
  Priority: P3
 Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: burnus at gcc dot gnu dot org


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



[Bug middle-end/29749] [4.0/4.1/4.2/4.3 regression] Missing byte swap optimizations

2007-08-23 Thread dougkwan at google dot com


--- Comment #9 from dougkwan at google dot com  2007-08-23 16:32 ---
Subject: Re:  [4.0/4.1/4.2/4.3 regression] Missing byte swap optimizations

No, FALSE, `(), nil, #f, 0 :)

-Doug

23 Aug 2007 14:28:51 -, ubizjak at gmail dot com
<[EMAIL PROTECTED]>:
>
>
> --- Comment #8 from ubizjak at gmail dot com  2007-08-23 14:28 ---
> (In reply to comment #7)
> > Created an attachment (id=13911)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13911&action=view)
>  --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13911&action=view) [edit]
> > Updated patch with test case a bug fix.
> >
> > I've added a test case of the changes. It did find a bug in the patch and 
> > I've
> > fixed that. I did a full bootstap and C/C++/ObjC dejagnu with top of 
> > 4.2-branch
> > as of 20070713 and had no problem.
>
> Any news with this patch?
>
>
> --
>
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29749
>
> --- You are receiving this mail because: ---
> You are on the CC list for the bug, or are watching someone who is.
>


-- 


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



[Bug c++/33161] Undefined symbols at link for referenced static const data member

2007-08-23 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-08-23 16:34 ---


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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE


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



[Bug c++/30745] Undefined static const

2007-08-23 Thread pinskia at gcc dot gnu dot org


--- Comment #5 from pinskia at gcc dot gnu dot org  2007-08-23 16:34 ---
*** Bug 33161 has been marked as a duplicate of this bug. ***


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||sylvain dot pion at sophia
   ||dot inria dot fr


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



[Bug tree-optimization/33136] [4.1/4.2/4.3 Regression] wrong code due to alias with allocation in loop

2007-08-23 Thread dberlin at dberlin dot org


--- Comment #19 from dberlin at gcc dot gnu dot org  2007-08-23 17:08 
---
Subject: Re:  [4.1/4.2/4.3 Regression] wrong code due to alias with allocation
in loop

On 23 Aug 2007 14:49:43 -, jakub at redhat dot com
<[EMAIL PROTECTED]> wrote:
>
>
> --- Comment #18 from jakub at redhat dot com  2007-08-23 14:49 ---
> Subject: Re:  [4.1/4.2/4.3 Regression] wrong code due to alias with allocation
> in loop
>
> On Thu, Aug 23, 2007 at 01:45:11PM -, dberlin at dberlin dot org wrote:
> > > If you take address of the whole struct rather than some specific field 
> > > and
> > > that address doesn't escape the CU, then that still doesn't explain how
> > > could a pointer var with first field's type point to the struct.
> >
> > > Say for
> > > struct A { int i; float f; } you still need (int *) ptrA
> >
> > Uh, no.
> >
> > &ptrA will do just fine. You can clobber all fields through it if it 
> > escapes.
>
> See "that address doesn't escape the CU" above I wrote.  But if so,
> it will be in global_types_full_escape and so
> ipa_type_escape_field_does_not_clobber_p will return false.
>
> > > If ipa_type_escape_star_count_of_interesting_type (var_type) > 0 (i.e. 
> > > var is
> > > a pointer to struct/union rather than struct/union itself, how is the 
> > > fact that
> > > something took address of fields within the struct itself relevant to 
> > > whether
> > > some pointer may point to the pointer var or not?
> >
> > If the address was never taken anywhere, it can't be pointed to.
> > Type-escape tries to go a little further, and see if, when the address
> > of a field is taken, if that address is ever cast'd,
> > incremented/decremented, or escapes.  If not, then only that field is
> > clobbbered, not the entire structure.  Otherwise, it is equivalent to
> > calculating TREE_ADDRESSABLE.
>
> I was talking about say
> struct S { int i; float f; struct S **s1; struct S ***s2; struct S s3; };
> struct S ***var;
> struct S ptr;
>
> If we are asking whether
> may_alias (ptr, get_alias_set (TREE_TYPE (TREE_TYPE (ptr))), var, 
> get_alias_set
> (var), false)
> then we are only interested in whether var is TREE_ADDRESSABLE,
> and this is IMHO exactly the same as asking in case of:
> void ***var;
> void ptr;
>
> But in the former case ipa_type_escape_star_count_of_interesting_type
> (var_type) == 3 and so we will call
> ipa_type_escape_field_does_not_clobber_p, in the latter case
> not.  How are these two different?

They aren't.

>
> In the c#8 testcase this is similar,
> ipa_type_escape_star_count_of_interesting_type (var_type) == 1,
> we have
> struct S *var;
> struct S **ptr;
> again, why does it matter if *var is a struct or not?  What matters
> is if var is TREE_ADDRESSABLE, if there is no &var, then it can't
> point to it, otherwise it can.  The same as for
> void *var;
> void **ptr;
>
> But if var isn't TREE_ADDRESSABLE, I'd bet nothing ever calls
> may_alias_p with it as third argument.

I'm not sure I believe that.   We probably still ask for globals anyway.

>
> So, do you agree the only case may_alias_p should handle with
> ipa_type_escape_field_does_not_clobber_p is
> ipa_type_escape_star_count_of_interesting_type (var_type) == 0 ?
Yes

It does look, however, that we should be using
field_does_not_clobber_p during call clobbering computation to avoid
clobbering entire structures when fields are clobbered (if possible).


-- 


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



[Bug c/33163] New: internal compiler error: in gen_rtx_SUBREG, at emit-rtl.c:700

2007-08-23 Thread fabio dot giovagnini at aurion-tech dot com
/usr/local/gcc-4.0.4/bin/h8300-elf-gcc -S -O3 -Wall -msx -fshort-enums
-fomit-frame-pointer -finline-functions -funroll-loops
-I/home/fgiovagnini/acts/bendia/test/include
-I/home/fgiovagnini/acts/bendia/system/include
/home/fgiovagnini/acts/bendia/test/source/library.c
/home/fgiovagnini/acts/bendia/test/source/library.c: In function
‘ul_to_8_cifre’:
/home/fgiovagnini/acts/bendia/test/source/library.c:36: internal compiler
error: in gen_rtx_SUBREG, at emit-rtl.c:700
Please submit a full bug report,
with preprocessed source if appropriate.


-- 
   Summary: internal compiler error: in gen_rtx_SUBREG, at emit-
rtl.c:700
   Product: gcc
   Version: 4.0.4
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: fabio dot giovagnini at aurion-tech dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: h8300-elf


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



[Bug c/33163] internal compiler error: in gen_rtx_SUBREG, at emit-rtl.c:700

2007-08-23 Thread fabio dot giovagnini at aurion-tech dot com


--- Comment #1 from fabio dot giovagnini at aurion-tech dot com  2007-08-23 
17:20 ---
const unsigned char Nib_to_Hex[16] =
{0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};

void ul_to_8_cifre(unsigned char vett[8],unsigned long a1)
{ 
/* LOCAL VARIABLES */
union _ul {
unsigned long ul;
unsigned char uc[4];
} t;

/* RETURN VALUE */

/* BODY FUNCTION */
t.ul = a1;

vett[0] = Nib_to_Hex[((t.uc[0] & 0xF0) >> 4)];
vett[1] = Nib_to_Hex[((t.uc[0] & 0x0F))];
vett[2] = Nib_to_Hex[((t.uc[1] & 0xF0) >> 4)];
vett[3] = Nib_to_Hex[((t.uc[1] & 0x0F))];
vett[4] = Nib_to_Hex[((t.uc[2] & 0xF0) >> 4)];
vett[5] = Nib_to_Hex[((t.uc[2] & 0x0F))];
vett[6] = Nib_to_Hex[((t.uc[3] & 0xF0) >> 4)];
vett[7] = Nib_to_Hex[((t.uc[3] & 0x0F))];

/* END BODY */ 

}


-- 


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



[Bug fortran/33090] Unable to build on AIX 4.3.3

2007-08-23 Thread bugzilla-gcc at thewrittenword dot com


--- Comment #2 from bugzilla-gcc at thewrittenword dot com  2007-08-23 
17:24 ---
(In reply to comment #1)
> Huh?  The warnings should be ok.  What exact error are you getting because I
> don't see -Werror on the command line so the warnings should not be stoping 
> the
> build?

Oops. I'll rebuild and post the error. Sorry.


-- 


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



[Bug c++/33156] preprocessor precedence of string concatenation backwards?

2007-08-23 Thread igodard at pacbell dot net


--- Comment #2 from igodard at pacbell dot net  2007-08-23 17:50 ---
Whether # is before or after string concatenation, string concatenation should
happen *sometime* and doesn't.


-- 


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



[Bug target/33164] New: Texinfo markup problems in tm.texi

2007-08-23 Thread kai-gcc-bugs at khms dot westfalen dot de
While writing a script to extract data from tm.texi, found the following markup
bugs:

TARGET_ASM_RELOC_RW_MASK needs return type
TARGET_CC_MODES_COMPATIBLE needs {} around return type
TARGET_CHECK_PCH_TARGET_FLAGS needs {} around return type
TARGET_DEFAULT_TARGET_FLAGS should be @deftypevr
TARGET_GET_PCH_VALIDITY needs {} around return type
TARGET_HAVE_SRODATA_SECTION should be @deftypevr
TARGET_HAVE_TLS should be @deftypevr
TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN needs {} around return type
TARGET_INVALID_WITHIN_DOLOOP needs {} around return type
TARGET_MAX_ANCHOR_OFFSET should be @deftypevr
TARGET_MIN_ANCHOR_OFFSET should be @deftypevr
TARGET_PCH_VALID_P needs {} around return type
TARGET_STRIP_NAME_ENCODING needs {} around return type
TARGET_TERMINATE_DW2_EH_FRAME_INFO should be @deftypevr
TARGET_UNWIND_TABLES_DEFAULT should be @deftypevr


-- 
   Summary: Texinfo markup problems in tm.texi
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: kai-gcc-bugs at khms dot westfalen dot de
 GCC build triplet: n/a
  GCC host triplet: n/a
GCC target triplet: n/a


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



[Bug c++/33156] preprocessor precedence of string concatenation backwards?

2007-08-23 Thread pinskia at gcc dot gnu dot org


--- Comment #3 from pinskia at gcc dot gnu dot org  2007-08-23 18:27 ---
(In reply to comment #2)
> Whether # is before or after string concatenation, string concatenation should
> happen *sometime* and doesn't.

Huh?  Stringification happens and turns #("a " "b") into "\"a \" \"b\"" so
there is no string concatenation happening after stringification.


-- 


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



[Bug c/30428] vector float | vector float is accepted

2007-08-23 Thread pinskia at gcc dot gnu dot org


--- Comment #7 from pinskia at gcc dot gnu dot org  2007-08-23 18:31 ---
(In reply to comment #6)
> Please fix the extension documentation accordingly.

The documentation already says:
The operations behave like C++ valarrays. Addition is defined as the addition
of the corresponding elements of the operands. 

So what is "float | float"?


-- 


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



[Bug c/30428] vector float | vector float is accepted

2007-08-23 Thread tbptbp at gmail dot com


--- Comment #8 from tbptbp at gmail dot com  2007-08-23 18:45 ---
Subject: Re:  vector float | vector float is accepted

On 23 Aug 2007 18:31:25 -, pinskia at gcc dot gnu dot org
<[EMAIL PROTECTED]> wrote:
> --- Comment #7 from pinskia at gcc dot gnu dot org  2007-08-23 18:31 
> ---
> (In reply to comment #6)
> > Please fix the extension documentation accordingly.
>
> The documentation already says:
> The operations behave like C++ valarrays. Addition is defined as the addition
> of the corresponding elements of the operands.
"All the basic integer types can be used as base types, both as signed
and as unsigned: char, short, int, long, long long. In addition, float
and double can be used to build floating-point vector types."
"Currently, GCC will allow using the following operators on these
types: +, -, *, /, unary minus, ^, |, &, ~."
Your patch and documentation conflict . Fix either, at your convenience.


-- 


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



[Bug c/30428] vector float | vector float is accepted

2007-08-23 Thread pinskia at gmail dot com


--- Comment #9 from pinskia at gmail dot com  2007-08-23 18:49 ---
Subject: Re:  vector float | vector float is accepted

On 23 Aug 2007 18:45:47 -, tbptbp at gmail dot com
<[EMAIL PROTECTED]> wrote:
> Your patch and documentation conflict . Fix either, at your convenience.

Read the next line.  That is where my quote is from.  Please read the
whole section before commenting.  Because in fact before my patch, the
documentation did not match the implementation.

Now I am going to say this documentation needs help but that is a
different issue.  Right after my patch, the documentation now follows
the implementation.

-- Pinski


-- 


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



[Bug c++/33165] New: method name lookup failure in inheritance tree

2007-08-23 Thread r dot a dot akkersdijk at saxion dot nl
/* 
PROBLEM:  name lookup failure in inheritance tree
PLATFORM: HP nx8220 Fedora Core 6
PACKAGES: gcc-4.1.2-13.fc6
PACKAGES: gcc-c++-4.1.2-13.fc6
PACKAGES: libgcc-4.1.2-13.fc6
OUTPUT:   g++ -v -o a a.cc
---
Using built-in specs.
Target: i386-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man 
--infodir=/usr/share/info --enable-shared --enable-threads=posix
--enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-libgcj-multifile
--enable-languages=c,c++,objc,obj-c++,java,fortran,ada
--enable-java-awt=gtk --disable-dssi --enable-plugin
--with-java-home=/usr/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre
--with-cpu=generic --host=i386-redhat-linux
Thread model: posix
gcc version 4.1.2 20070626 (Red Hat 4.1.2-13)
 /usr/libexec/gcc/i386-redhat-linux/4.1.2/cc1plus -quiet -v -D_GNU_SOURCE a.cc
-quiet -dumpbase a.cc -mtune=generic -auxbase a -version -o
/tmp/ccq59QI3.s
ignoring nonexistent directory
"/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../i386-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2

/usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/i386-redhat-linux
 /usr/lib/gcc/i386-redhat-linux/4.1.2/../../../../include/c++/4.1.2/backward
 /usr/local/include
 /usr/lib/gcc/i386-redhat-linux/4.1.2/include
 /usr/include
End of search list.
GNU C++ version 4.1.2 20070626 (Red Hat 4.1.2-13) (i386-redhat-linux)
compiled by GNU C version 4.1.2 20070626 (Red Hat 4.1.2-13).
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 3a456da196cbee4c75d3822886d8cc8c

- the error message --
a.cc: In function ‘int main(int, char**)’:
a.cc:73: error: no matching function for call to ‘B::f(int)’
a.cc:61: note: candidates are: void B::f(int, int)
*/

// = the source code 
#include 

// This combination of functions works fine ...
voidg( int x ){ printf("::g(i)\n"); }
voidg( int x, int y ) { printf("::g(i,i)\n"); }

// but ...
class   A   // A baseclass
{
public:
void  f(int x)  { printf("A::f(i)\n"); }
};

classB : public A
{
public:
void  f(int x, int y) { printf("B::f(i,i)\n"); }
// This method has the same name (f) as the one inherited
// from A, but a different parameter list, so it should be
// distinct (like the global g's above).
};

int main( int argc, char * argv[] )
{
g( 1 ); // expect ::g(i)oke
g( 1, 2 );  // expect ::g(i,i)  oke

B   b;
b.f( 1 );   // expect A::f(i)   oops
// but apparently the compiler can now
// only recognize B::f(i,i)
b.f( 1, 2 );// expect B::f(i,i) oke

return 0;
}

/*  expected ouput =
If you rename B::f to B::h you'll get the expected output
::g(i)
::g(i,i)
A::f(i)
B::f(i,i)
To summarize the problem in general:
When a derived class defines a (or more) method(s)
with the same name as a method inherited from a baseclass,
all inherited methods with that name get 'shadowed', even when
they have totally different parameterlists.
*/


-- 
   Summary: method name lookup failure in inheritance tree
   Product: gcc
   Version: 4.1.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: r dot a dot akkersdijk at saxion dot nl
 GCC build triplet: i386-redhat-linux
  GCC host triplet: i386-redhat-linux
GCC target triplet: i386-redhat-linux


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



[Bug target/33151] Invalid insn with pre_inc

2007-08-23 Thread zadeck at naturalbridge dot com


--- Comment #4 from zadeck at naturalbridge dot com  2007-08-23 18:59 
---
Subject: Re:  Invalid insn with pre_inc

pinskia at gcc dot gnu dot org wrote:
> --- Comment #3 from pinskia at gcc dot gnu dot org  2007-08-22 22:41 
> ---
> I think we need a new predicate for this rtl instruction, currently we just
> have:
>(clobber (match_operand:DF 4 "memory_operand" "=o"))
>
>
>   
After thinking about this last night, i believe that this problem should
be solved at the machine description level, not by changing
auto-inc-dec.c.  Auto-inc-dec.c uses all of the standard interfaces to
keep from generating invalid rtl.  So it seems proper to have the md
level not allow the creation of this insn. 

Kenny


-- 


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



[Bug c++/33165] method name lookup failure in inheritance tree

2007-08-23 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-08-23 19:00 ---
No, this is correct, f in B hides all of f's in A, no matter what argument
types of f are in A.  You have to add "using A::f;" inside B to get the
behavior you want.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug bootstrap/32272] make exit because build/genmodes.exe doesn't exist

2007-08-23 Thread mwheeler at pittstate dot edu


--- Comment #2 from mwheeler at pittstate dot edu  2007-08-23 19:06 ---
I'm having this exact same problem. I'm building on AIX 5.3. My output looks
almost exactly the same as the other posters. My only configure option was:
--prefix=/usr/local

Here is the output:
make[3]: Entering directory `/scratch/gcc-4.2.1/gcc-obj/gcc'
TARGET_CPU_DEFAULT="" \
HEADERS="auto-host.h ansidecl.h" DEFINES="USE_COLLECT2" \
/bin/sh ../../gcc-4.2.1/gcc/mkconfig.sh config.h
TARGET_CPU_DEFAULT="" \
HEADERS="options.h config/rs6000/rs6000.h config/rs6000/aix.h
config/rs6000/aix52.h config/rs6000/xcoff.h defaults.h" DEFINES="" \
/bin/sh ../../gcc-4.2.1/gcc/mkconfig.sh tm.h
nawk -f ../../gcc-4.2.1/gcc/opt-gather.awk ../../gcc-4.2.1/gcc/ada/lang.opt
../../gcc-4.2.1/gcc/fortran/lang.opt ../../gcc-4.2.1/gcc/java/lang.opt
../../gcc-4.2.1/gcc/treelang/lang.opt ../../gcc-4.2.1/gcc/c.opt
../../gcc-4.2.1/gcc/common.opt ../../gcc-4.2.1/gcc/config/rs6000/rs6000.opt
../../gcc-4.2.1/gcc/config/rs6000/aix64.opt > tmp-optionlist
/bin/sh ../../gcc-4.2.1/gcc/../move-if-change tmp-optionlist optionlist
echo timestamp > s-options
nawk -f ../../gcc-4.2.1/gcc/opt-functions.awk -f
../../gcc-4.2.1/gcc/opth-gen.awk \
   < optionlist > tmp-options.h
/bin/sh ../../gcc-4.2.1/gcc/../move-if-change tmp-options.h options.h
echo timestamp > s-options-h
TARGET_CPU_DEFAULT="" \
HEADERS="auto-host.h ansidecl.h" DEFINES="" \
/bin/sh ../../gcc-4.2.1/gcc/mkconfig.sh bconfig.h
gcc -c   -g -fkeep-inline-functions -DIN_GCC   -W -Wall -Wwrite-strings
-Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition
-Wmissing-format-attribute -fno-common   -DHAVE_CONFIG_H -DGENERATOR_FILE -I.
-Ibuild -I../../gcc-4.2.1/gcc -I../../gcc-4.2.1/gcc/build
-I../../gcc-4.2.1/gcc/../include -I./../intl
-I../../gcc-4.2.1/gcc/../libcpp/include  -I../../gcc-4.2.1/gcc/../libdecnumber
-I../libdecnumber-o build/errors.o ../../gcc-4.2.1/gcc/errors.c
build/genmodes -h > tmp-modes.h
/bin/sh: build/genmodes:  not found.
make[3]: *** [s-modes-h] Error 127
make[3]: Leaving directory `/scratch/gcc-4.2.1/gcc-obj/gcc'
make[2]: *** [all-stage1-gcc] Error 2
make[2]: Leaving directory `/scratch/gcc-4.2.1/gcc-obj'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/scratch/gcc-4.2.1/gcc-obj'
make: *** [all] Error 2


-- 

mwheeler at pittstate dot edu changed:

   What|Removed |Added

 CC||mwheeler at pittstate dot
   ||edu


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



[Bug c++/33156] preprocessor precedence of string concatenation backwards?

2007-08-23 Thread igodard at pacbell dot net


--- Comment #4 from igodard at pacbell dot net  2007-08-23 19:30 ---
Ah! I see. So if string cat is after there's only one string, which does
contain embedded quotes as printed.

And if string cat were before you couldn't compose a string out of a sequence
of macro calls and literals. Makes sense, sorry to bother you.


-- 

igodard at pacbell dot net changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug c/30428] vector float | vector float is accepted

2007-08-23 Thread tbptbp at gmail dot com


--- Comment #10 from tbptbp at gmail dot com  2007-08-23 19:42 ---
Subject: Re:  vector float | vector float is accepted

On 23 Aug 2007 18:49:22 -, pinskia at gmail dot com
<[EMAIL PROTECTED]> wrote:
> Read the next line.  That is where my quote is from.  Please read the
> whole section before commenting.  Because in fact before my patch, the
> documentation did not match the implementation.
"The operations behave like C++ valarrays. Addition is defined as the
addition of the corresponding elements of the operands. For example,
in the code below...
Subtraction, multiplication, division, and the logical operations
operate in a similar manner."

It's clearly and explicitly stated that
a) float is a legit underlying type
b) operators +, -, *, /, unary minus, ^, |, &, ~ are allowed
c) all those operators work the same way as the described piecewise addition

Do you expect anyone to read into the vague "behave like C++
valarrays" an embargo on "float | float"? I mean, if those vectors are
valarrays where is, say, the operator[]?

But i understand that under your rather peculiar interpretation
everything's fine. I will gladly move along.


-- 


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



[Bug tree-optimization/33166] [4.3 Regression] ICE in get_indirect_ref_operands, at tree-ssa-operands.c:1698

2007-08-23 Thread tbm at cyrius dot com


--- Comment #1 from tbm at cyrius dot com  2007-08-23 19:55 ---
/* Testcase by Martin Michlmayr <[EMAIL PROTECTED]> */

void ConvertAddr (char *saddr, void **addr)
{
  *addr = (void *) &saddr;
}
void DefineSelf (char *addr)
{
  int i;
  for (i = 0; i < 20; i += 4) {
ConvertAddr (addr, (void **) &addr);
if (addr[0] == 127 && addr[1] == 0 && addr[2] == 0 && addr[3] == 1)
  continue;
  }
}


-- 


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



[Bug tree-optimization/33166] [4.3 Regression] ICE in get_indirect_ref_operands, at tree-ssa-operands.c:1698

2007-08-23 Thread tbm at cyrius dot com


--- Comment #2 from tbm at cyrius dot com  2007-08-23 19:58 ---
This also happens with 20070720 but not with 20070616.


-- 


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



[Bug tree-optimization/33166] New: [4.3 Regression] ICE in get_indirect_ref_operands, at tree-ssa-operands.c:1698

2007-08-23 Thread tbm at cyrius dot com
I get the following ICE with current trunk:

(sid)28159:[EMAIL PROTECTED]: ~] /usr/lib/gcc-snapshot/bin/gcc -c -O3 
tightvnc-access.c
tightvnc-access.c: In function 'DefineSelf':
tightvnc-access.c:8: internal compiler error: in get_indirect_ref_operands, at
tree-ssa-operands.c:1698
Please submit a full bug report,
with preprocessed source if appropriate.


-- 
   Summary: [4.3 Regression] ICE in get_indirect_ref_operands, at
tree-ssa-operands.c:1698
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: tbm at cyrius dot com


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



[Bug rtl-optimization/3507] appalling optimisation with sub/cmp on multiple targets

2007-08-23 Thread eweddington at cso dot atmel dot com


--- Comment #7 from eweddington at cso dot atmel dot com  2007-08-23 20:10 
---
Confirmed for AVR. GCC 4.2.1 for avr generates this:

foo:
/* prologue: frame size=0 */
push r14
push r15
push r16
push r17
/* prologue end (size=4) */
movw r14,r22
movw r16,r24
sub r14,r18
sbc r15,r19
sbc r16,r20
sbc r17,r21
cp r22,r18
cpc r23,r19
cpc r24,r20
cpc r25,r21
brsh .L2
ldi r24,lo8(100)
ldi r25,hi8(100)
ldi r26,hlo8(100)
ldi r27,hhi8(100)
add r14,r24
adc r15,r25
adc r16,r26
adc r17,r27
.L2:
movw r24,r16
movw r22,r14
/* epilogue: frame size=0 */
pop r17
pop r16
pop r15
pop r14
ret

Ideally it should be something like:

foo:
/* prologue: frame size=0 */
sub r22,r18
sbc r23,r19
sbc r24,r20
sbc r25,r21
brcc .L2
ldi r18,lo8(100)
ldi r19,hi8(100)
ldi r20,hlo8(100)
ldi r21,hhi8(100)
add r22,r18
adc r23,r19
adc r24,r20
adc r25,r21
.L2:
/* epilogue: frame size=0 */
ret

Which is less than half the number of instructions.

Changing summary and target fields


-- 

eweddington at cso dot atmel dot com changed:

   What|Removed |Added

 GCC target triplet|i386-linux, powerpc-*-* |i386-linux, powerpc-*-*,
   ||avr-*-*
   Last reconfirmed|2006-03-05 03:13:08 |2007-08-23 20:10:25
   date||
Summary|appalling optimisation with |appalling optimisation with
   |sub/cmp on i386 |sub/cmp on multiple targets


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



[Bug target/19684] avr wrong size in asm comment (peephole)

2007-08-23 Thread eweddington at cso dot atmel dot com


-- 

eweddington at cso dot atmel dot com changed:

   What|Removed |Added

   Severity|normal  |minor
   Priority|P2  |P5


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



[Bug middle-end/31150] [4.1/4.2/4.3 Regression] Not promoting an whole array to be static const

2007-08-23 Thread jakub at gcc dot gnu dot org


--- Comment #6 from jakub at gcc dot gnu dot org  2007-08-23 20:36 ---
It is unfortunate that gimple can only initialize the whole array, unless
__builtin_memcpy is used.  Unfortunately __builtin_memcpy has a different
drawback - the var will be forced to be TREE_ADDRESSABLE even when it otherwise
wouldn't have to be.
So, we have the option to add some flag to count_type_elements etc., so that
they will behave one way for expr.c etc. and one way for the gimplifier - there
it would need to count whole arrays as units if they are initialized from
string
literals, etc.
The other option is IMHO to hint during expansion expand_assignment that
the memory is already cleared by previous var = {} and so it can avoid storing
zeros.  Or teach some RTL pass to remove the redundant zero stores.  If
the big clear_storage is done through clearing by pieces, DSE will already
handle this to some extent (will remove redundant stores from the big
clear_storage), but if it is done through a special insn (like rep stosb) or
through memset call, nothing will remove it.

While looking at this, I have noticed that a simple
struct A { char c[10]; };

void
foo (void)
{
  struct A a = { "abcdefghi" };
  baz (&a);
}

void
bar (void)
{
  struct A a;
  __builtin_strcpy (&a.c[0], "abcdefghi");
  baz (&a);
}

is not as efficient as it ought to be in the foo function - while strcpy/memcpy
can and in this case will use store_by_pieces, store_expr will always emit the
string literal to memory and then emit a block move from it to target followed
optionally by clear_storage of the rest of the memory.
I'm testing a patch to improve this ATM.


-- 


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



[Bug middle-end/21990] Wrong code for 4.0 and head: Reload clobbers the frame pointer by using it as spill register without recognizing the clobbering

2007-08-23 Thread eweddington at cso dot atmel dot com


--- Comment #15 from eweddington at cso dot atmel dot com  2007-08-23 20:39 
---
Closing bug as WORKSFORME based on Bjoern's observations in comment #13.


-- 

eweddington at cso dot atmel dot com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||WORKSFORME


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



[Bug tree-optimization/33166] [4.3 Regression] ICE in get_indirect_ref_operands, at tree-ssa-operands.c:1698

2007-08-23 Thread pinskia at gcc dot gnu dot org


--- Comment #3 from pinskia at gcc dot gnu dot org  2007-08-23 20:59 ---
# VUSE  { saddr SMT.6 }
D.2252_6 = *&saddr


This happens in forwprop.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Keywords||ice-on-valid-code
   Last reconfirmed|-00-00 00:00:00 |2007-08-23 20:59:20
   date||
   Target Milestone|--- |4.3.0


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



[Bug c/33167] New: Hex constant characters with \x escape not parsing correctly

2007-08-23 Thread weston at computer dot org
There seems to be a problem with how gcc parses the \x escape sequences.  It
doesn't look at just the first 2 hex digits, but will take the right most 2 hex
digits in a string of hex digits.  

[Recreate]
---[ SNIP ]-
// test.c
#include 
#include 

int main() {
char *string = "\x01\x02\x03Bob";
printf("len: %d\n",  strlen(string) );
return 1;
}
---[ SNIP ]-

[Compilation options]
gcc -Wall test.c -o test

[Expected Results]
You would expect this to print out "len: 6", but it actually prints out "len:
5" It seems that its parsing the last \x escape as the hex value 0x3B instead
of 2 characters, 0x03 and 'B'.

[Platforms]
I've noticed this problem in gcc 4.1.0 and 4.0.1 (on a mac).  Heres more info
on one of the systems I've experiences this on:

gcc (GCC) 4.1.0 (SUSE Linux)
Using built-in specs.
Target: i586-suse-linux
Configured with: ../configure --enable-threads=posix --prefix=/usr
--with-local-prefix=/usr/local --infodir=/usr/share/info
--mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib
--enable-languages=c,c++,objc,fortran,java,ada --enable-checking=release
--with-gxx-include-dir=/usr/include/c++/4.1.0 --enable-ssp --disable-libssp
--enable-java-awt=gtk --enable-gtk-cairo --disable-libjava-multilib
--with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit
--enable-libstdcxx-allocator=new --without-system-libunwind --with-cpu=generic
--host=i586-suse-linux
Thread model: posix
gcc version 4.1.0 (SUSE Linux)

$ uname -a
linux haldol 2.6.16.13-4-default #1 Wed May 3 04:53:23 UTC 2006 i686 athlon
i386 GNU/Linux


-- 
   Summary: Hex constant characters with \x escape not parsing
correctly
   Product: gcc
   Version: 4.1.0
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: weston at computer dot org
 GCC build triplet: i586-suse-linux
  GCC host triplet: i586-suse-linux
GCC target triplet: i586-suse-linux


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



[Bug c/33167] Hex constant characters with \x escape not parsing correctly

2007-08-23 Thread pinskia at gcc dot gnu dot org


--- Comment #1 from pinskia at gcc dot gnu dot org  2007-08-23 21:59 ---
No GCC is correct.
The standard says:
Each octal or hexadecimal escape sequence is the longest sequence of characters
that can constitute the escape sequence.

So that means the B is going to be taken and be used for the hexadecimal escape
sequence.


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||INVALID


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



[Bug libstdc++/33168] New: GCC Boot failure, building libstc++

2007-08-23 Thread michelin60 at gmail dot com
This time __please__ follow standard procedures instead of doing it like
PR33125/PR33126 where the earlier submission was made a duplicate of a later
one  . Which then was left unconfirmed for a lengthy period (6+ hours) and
never formally closed as resolved leaving the parties hanging.

Using built-in specs.
Target: powerpc-unknown-linux-gnu
Configured with: ../gcc-4.3.0/configure --prefix=/usr --infodir=/usr/share/info
--mandir=/usr/share/man --host=powerpc-unknown-linux-gnu
--build=powerpc-unknown-linux-gnu --enable-__cxa_atexit --enable-threads=posix
--enable-shared --enable-clocale=gnu --enable-bootstrap
--enable-languages=c,c++,fortran --enable-altivec --disable-libssp
--disable-decimal-float --disable-libmudflap --disable-nls --disable-werror
--disable-multilib --with-ibmlongdouble --with-cpu=G4 --enable-clocale=gnu
--with-system-zlib
Thread model: posix
gcc version 4.3.0 20070823 (experimental) (GCC) 
 /usr/libexec/gcc/powerpc-unknown-linux-gnu/4.3.0/cc1plus -E -quiet -nostdinc++
-v
-I/var/tmp/43/build-140/powerpc-unknown-linux-gnu/libstdc++-v3/include/powerpc-unknown-linux-gnu
-I/var/tmp/43/build-140/powerpc-unknown-linux-gnu/libstdc++-v3/include
-I/var/tmp/43/gcc-4.3.0/libstdc++-v3/libsupc++ -iprefix
/var/tmp/43/build-140/gcc/../lib/gcc/powerpc-unknown-linux-gnu/4.3.0/
-D_GNU_SOURCE -D__unix__ -D__gnu_linux__ -D__linux__ -Dunix -D__unix -Dlinux
-D__linux -Asystem=linux -Asystem=unix -Asystem=posix -D_GNU_SOURCE -isystem
/usr/powerpc-unknown-linux-gnu/include -isystem
/usr/powerpc-unknown-linux-gnu/sys-include
../gcc-4.3.0/libstdc++-v3/src/system_error.cc -mcpu=G4 -std=gnu++0x -Wall
-Wextra -Wwrite-strings -Wcast-qual -fno-implicit-templates
-fdiagnostics-show-location=once -ffunction-sections -fdata-sections
-fworking-directory -O2 -fpch-preprocess -o system_error.ii
ignoring nonexistent directory "/usr/powerpc-unknown-linux-gnu/include"
ignoring nonexistent directory "/usr/powerpc-unknown-linux-gnu/sys-include"
ignoring nonexistent directory
"/var/tmp/43/build-140/gcc/../lib/gcc/powerpc-unknown-linux-gnu/4.3.0/include"
ignoring nonexistent directory
"/var/tmp/43/build-140/gcc/../lib/gcc/powerpc-unknown-linux-gnu/4.3.0/include-fixed"
ignoring nonexistent directory
"/var/tmp/43/build-140/gcc/../lib/gcc/powerpc-unknown-linux-gnu/4.3.0/../../../../powerpc-unknown-linux-gnu/include"
ignoring nonexistent directory
"/var/tmp/43/build-140/gcc/../lib/gcc/../../lib/gcc/powerpc-unknown-linux-gnu/4.3.0/include"
ignoring nonexistent directory
"/var/tmp/43/build-140/gcc/../lib/gcc/../../lib/gcc/powerpc-unknown-linux-gnu/4.3.0/include-fixed"
ignoring nonexistent directory
"/var/tmp/43/build-140/gcc/../lib/gcc/../../lib/gcc/powerpc-unknown-linux-gnu/4.3.0/../../../../powerpc-unknown-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:

/var/tmp/43/build-140/powerpc-unknown-linux-gnu/libstdc++-v3/include/powerpc-unknown-linux-gnu
 /var/tmp/43/build-140/powerpc-unknown-linux-gnu/libstdc++-v3/include
 /var/tmp/43/gcc-4.3.0/libstdc++-v3/libsupc++
 /usr/include/libffi
 /usr/local/include
 /usr/include
End of search list.
 /usr/libexec/gcc/powerpc-unknown-linux-gnu/4.3.0/cc1plus -fpreprocessed
system_error.ii -quiet -dumpbase system_error.cc -mcpu=G4 -auxbase-strip
system_error.o -g -O2 -Wall -Wextra -Wwrite-strings -Wcast-qual -std=gnu++0x
-version -fno-implicit-templates -fdiagnostics-show-location=once
-ffunction-sections -fdata-sections -o system_error.s
GNU C++ (GCC) version 4.3.0 20070823 (experimental) (powerpc-unknown-linux-gnu)
compiled by GNU C version 4.3.0 20070823 (experimental), GMP version
4.2.1, MPFR version 2.2.1-p5.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 91efee225a5243299b9fb0dada305fe7
../gcc-4.3.0/libstdc++-v3/src/system_error.cc:67: error: std::system_category
causes a section type conflict


-- 
   Summary: GCC Boot failure, building libstc++
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: michelin60 at gmail dot com
 GCC build triplet: rs600
  GCC host triplet: rs6000
GCC target triplet: rs6000


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



[Bug target/12017] ICE: in spill_failure, at reload1.c:1862 with builtin_apply/builtin_return

2007-08-23 Thread eweddington at cso dot atmel dot com


--- Comment #12 from eweddington at cso dot atmel dot com  2007-08-23 22:26 
---
Seems to be fixed in 4.3 20070817 snapshot.

An additional minor patch is needed, not for this bug, but to allow Objective-C
to build for the AVR. (It's unknown if Objective-C will actually *work* on the
AVR...)

--- gcc/config/avr/avr.h.old2007-08-23 15:18:31.015625000 -0600
+++ gcc/config/avr/avr.h2007-08-23 15:19:17.68750 -0600
@@ -53,7 +53,7 @@ extern int avr_mega_p;
 extern int avr_have_mul_p;
 extern int avr_asm_only_p;
 extern int avr_have_movw_lpmx_p;
-#ifndef IN_LIBGCC2
+#if !defined(IN_LIBGCC2) && !defined(IN_TARGET_LIBS)
 extern GTY(()) section *progmem_section;
 #endif



-- 

eweddington at cso dot atmel dot com changed:

   What|Removed |Added

  Known to work||4.3.0
   Target Milestone|--- |4.3.0


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



[Bug libstdc++/33168] GCC Boot failure, building libstc++

2007-08-23 Thread michelin60 at gmail dot com


--- Comment #1 from michelin60 at gmail dot com  2007-08-23 22:28 ---
Created an attachment (id=14097)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14097&action=view)
preprocessed


-- 


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



[Bug c++/33169] New: Compiler generates two different relocs for the same symbol

2007-08-23 Thread atgraham at gmail dot com
The compiler generates two different relocs for the same function call, which
causes the linker to get confused.

- Input -
#include "pthread.h"
#include 
#include 
typedef __gnu_cxx::__pool_alloc > myalloc;
int main() {
  std::map, myalloc> y;
  pthread_mutex_lock(0);
}
-
build with:
  mipsel-linux-g++ -Os -fno-inline -c foo.cc
(No command line flags are required; they don't appear to make a difference,
but the examples here will reflect those above.)

In this code chunk, pthread_mutex_lock is called from two places.  The first is
from inside the allocator, the second is directly in main.  From the allocator,
a R_MIPS_GOT16/R_MIPS_LO16 reloc is generated.  From main(), a R_MIPS_CALL16
reloc is generated.

001c <__gthread_mutex_lock(pthread_mutex_t*)>:
  1c:   3c1clui gp,0x0
1c: R_MIPS_HI16 _gp_disp
  20:   279caddiu   gp,gp,0
20: R_MIPS_LO16 _gp_disp
  24:   0399e021addugp,gp,t9
  28:   27bdffe0addiu   sp,sp,-32
  2c:   afbf001csw  ra,28(sp)
  30:   afb00018sw  s0,24(sp)
  34:   afbc0010sw  gp,16(sp)
  38:   8f99lw  t9,0(gp)
38: R_MIPS_GOT16.text
  3c:   2739addiu   t9,t9,0
3c: R_MIPS_LO16 .text
  40:   0320f809jalrt9
  44:   00808021moves0,a0
  48:   1048beqzv0,6c
<__gthread_mutex_lock(pthread_mutex_t*)+0x
50>
  4c:   8fbc0010lw  gp,16(sp)
  50:   8f99lw  t9,0(gp)
50: R_MIPS_GOT16pthread_mutex_lock
  54:   02002021movea0,s0
  58:   8fbf001clw  ra,28(sp)
  5c:   8fb00018lw  s0,24(sp)
  60:   2739addiu   t9,t9,0
60: R_MIPS_LO16 pthread_mutex_lock
  64:   0328jr  t9
  68:   27bd0020addiu   sp,sp,32
  6c:   8fbf001clw  ra,28(sp)
  70:   8fb00018lw  s0,24(sp)
  74:   03e8jr  ra
  78:   27bd0020addiu   sp,sp,32

00dc :
  dc:   3c1clui gp,0x0
dc: R_MIPS_HI16 _gp_disp
  e0:   279caddiu   gp,gp,0
e0: R_MIPS_LO16 _gp_disp
  e4:   0399e021addugp,gp,t9
  e8:   27bdffc8addiu   sp,sp,-56
  ec:   afbf0034sw  ra,52(sp)
  f0:   afb00030sw  s0,48(sp)
  f4:   afbc0010sw  gp,16(sp)
  f8:   8f99lw  t9,0(gp)
f8: R_MIPS_CALL16   std::map, __gnu_cxx::__pool_alloc > >::map()
  fc:   27b00018addiu   s0,sp,24
 100:   0320f809jalrt9
 104:   02002021movea0,s0
 108:   8fbc0010lw  gp,16(sp)
 10c:   8f99lw  t9,0(gp)
10c: R_MIPS_CALL16  pthread_mutex_lock
 110:   0320f809jalrt9
 114:   2021movea0,zero
 118:   8fbc0010lw  gp,16(sp)
 11c:   8f99lw  t9,0(gp)
11c: R_MIPS_CALL16  std::map, __gnu_cxx::__pool_alloc > >::~map()
 120:   0320f809jalrt9
 124:   02002021movea0,s0
 128:   8fbc0010lw  gp,16(sp)
 12c:   8fbf0034lw  ra,52(sp)
 130:   8fb00030lw  s0,48(sp)
 134:   1021movev0,zero
 138:   03e8jr  ra
 13c:   27bd0038addiu   sp,sp,56

When the linker sees the R_MIPS_CALL16, it decides that a PLT entry should be
generated for the symbol, and thusly changes its object-modification behavior
for *all* invocations of the function.  The R_MIPS_CALL16 relocs are then
linked correctly, but the R_MIPS_GOT16 are linked incorrectly.

This is just as likely a bug in the linker as it is in the compiler, but gcc
4.0.0 (the only other version I have tested) doesn't have this problem.  It is
more consistent and generates R_MIPS_CALL16 in both cases.  If this is not a
bug in the compiler, I'll report to binutils.


-- 
   Summary: Compiler generates two different relocs for the same
symbol
   Product: gcc
   Version: 4.2.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: atgraham at gmail dot com
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: mipsel-linux


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



[Bug c++/31941] [4.1/4.2/4.3 Regression] "confused by earlier errors" message without earlier error message

2007-08-23 Thread jakub at gcc dot gnu dot org


--- Comment #4 from jakub at gcc dot gnu dot org  2007-08-23 23:23 ---
Subject: Bug 31941

Author: jakub
Date: Thu Aug 23 23:23:26 2007
New Revision: 127747

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127747
Log:
PR c++/31941
* error.c (resolve_virtual_fun_from_obj_type_ref): Handle
TARGET_VTABLE_USES_DESCRIPTORS targets properly.

* g++.dg/parse/crash37.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/parse/crash37.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/error.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug c++/32898] [4.2/4.3 regression] Definition of variable N::i outside namespace N not rejected

2007-08-23 Thread jakub at gcc dot gnu dot org


--- Comment #3 from jakub at gcc dot gnu dot org  2007-08-23 23:27 ---
Subject: Bug 32898

Author: jakub
Date: Thu Aug 23 23:27:34 2007
New Revision: 127749

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127749
Log:
PR c++/32898
* name-lookup.c (set_decl_namespace): lookup_qualified_name failure
is error_mark_node rather than NULL_TREE.
* pt.c (check_explicit_specialization): Likewise.

* g++.dg/lookup/ns3.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/lookup/ns3.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/name-lookup.c
trunk/gcc/cp/pt.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug middle-end/32946] [4.3 Regression] ICE with -fpredictive-commoning in build_classic_dist_vector_1

2007-08-23 Thread jakub at gcc dot gnu dot org


--- Comment #7 from jakub at gcc dot gnu dot org  2007-08-23 23:30 ---
Subject: Bug 32946

Author: jakub
Date: Thu Aug 23 23:29:57 2007
New Revision: 127750

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127750
Log:
PR tree-optimization/32573
PR middle-end/32946
* tree-data-ref.c (initialize_data_dependence_relation): Clear
DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
(finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
(build_classic_dist_vector): Return false rather than true if
DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
if either subscript_dependence_tester_1 or build_classic_dist_vector_1
returned false.  Don't call save_dist_v before calling
build_classic_dist_vector_1.
(free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
DDR_DIR_VECTS vectors.

* gcc.dg/pr32573.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/pr32573.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-data-ref.c


-- 


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



[Bug tree-optimization/32573] [4.3 Regression] ice for legal code with -O3

2007-08-23 Thread jakub at gcc dot gnu dot org


--- Comment #6 from jakub at gcc dot gnu dot org  2007-08-23 23:30 ---
Subject: Bug 32573

Author: jakub
Date: Thu Aug 23 23:29:57 2007
New Revision: 127750

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127750
Log:
PR tree-optimization/32573
PR middle-end/32946
* tree-data-ref.c (initialize_data_dependence_relation): Clear
DDR_SUBSCRIPTS, DDR_DIR_VECTS and DDR_DIST_VECTS at the beginning.
(finalize_ddr_dependent): Clear DDR_SUBSCRIPTS after freeing it.
(build_classic_dist_vector): Return false rather than true if
DDR_ARE_DEPENDENT is non-NULL at the beginning.  Return false
if either subscript_dependence_tester_1 or build_classic_dist_vector_1
returned false.  Don't call save_dist_v before calling
build_classic_dist_vector_1.
(free_dependence_relation): Don't guard freeing DDR_SUBSCRIPTS
with NULL DDR_ARE_DEPENDENT.  Also free DDR_DIST_VECTS and/or
DDR_DIR_VECTS vectors.

* gcc.dg/pr32573.c: New test.

Added:
trunk/gcc/testsuite/gcc.dg/pr32573.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-data-ref.c


-- 


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



[Bug c++/28358] ICE on valide template code using -O1 or -O2, but *not* with -O0 or -O3

2007-08-23 Thread pinskia at gcc dot gnu dot org


--- Comment #6 from pinskia at gcc dot gnu dot org  2007-08-24 00:24 ---
Yes this is a dup of PR 28116.

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


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||DUPLICATE


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



[Bug middle-end/28116] [4.1 Regression] ICE when building konverter with gcc-4.1 with -O3 [RSO]

2007-08-23 Thread pinskia at gcc dot gnu dot org


--- Comment #20 from pinskia at gcc dot gnu dot org  2007-08-24 00:24 
---
*** Bug 28358 has been marked as a duplicate of this bug. ***


-- 

pinskia at gcc dot gnu dot org changed:

   What|Removed |Added

 CC||peter dot soetens at fmtc
   ||dot be


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



[Bug c++/33169] Compiler generates two different relocs for the same symbol

2007-08-23 Thread atgraham at gmail dot com


--- Comment #1 from atgraham at gmail dot com  2007-08-24 00:40 ---
This problem is due to the fact that GTHREAD_USE_WEAK is incorrectly defined
for this architecture.


-- 

atgraham at gmail dot com changed:

   What|Removed |Added

  Component|target  |c++


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



[Bug middle-end/33170] New: [4.3 Regression] revision 123223 causes gcc.target/i386/cmov4.c

2007-08-23 Thread hjl at lucon dot org
This patch

http://gcc.gnu.org/ml/gcc-patches/2007-03/msg01634.html

causes gcc.target/i386/cmov4.c regression.


-- 
   Summary: [4.3 Regression] revision 123223 causes
gcc.target/i386/cmov4.c
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: hjl at lucon dot org


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



[Bug inline-asm/33171] GCC outputs invalid assembly when using -O2

2007-08-23 Thread ianw at gelato dot unsw dot edu dot au


--- Comment #1 from ianw at gelato dot unsw dot edu dot au  2007-08-24 
05:04 ---
Created an attachment (id=14098)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14098&action=view)
-S output with no optimisation


-- 


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



[Bug inline-asm/33171] GCC outputs invalid assembly when using -O2

2007-08-23 Thread ianw at gelato dot unsw dot edu dot au


--- Comment #2 from ianw at gelato dot unsw dot edu dot au  2007-08-24 
05:04 ---
Created an attachment (id=14099)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14099&action=view)
-S output with -O2


-- 


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



[Bug middle-end/33157] [4.3 Regression] cmov4.c fails on i686

2007-08-23 Thread bonzini at gnu dot org


--- Comment #1 from bonzini at gnu dot org  2007-08-24 05:17 ---
*** Bug 33170 has been marked as a duplicate of this bug. ***


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 CC||hjl at lucon dot org


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



[Bug middle-end/33170] [4.3 Regression] revision 123223 causes gcc.target/i386/cmov4.c

2007-08-23 Thread bonzini at gnu dot org


--- Comment #1 from bonzini at gnu dot org  2007-08-24 05:17 ---


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


-- 

bonzini at gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||DUPLICATE
Summary|[4.3 Regression] revision   |[4.3 Regression] revision
   |123223 causes   |123223 causes
   |gcc.target/i386/cmov4.c |gcc.target/i386/cmov4.c


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



[Bug inline-asm/33171] New: GCC outputs invalid assembly when using -O2

2007-08-23 Thread ianw at gelato dot unsw dot edu dot au
Hi,

The following example, when built with -O2, results in 

~$ .gcc -O2 -o test2 ~/test2.c 
/tmp/cc6SGh7Z.s: Assembler messages:
/tmp/cc6SGh7Z.s:16: Error: syntax error; found `,' but expected `('
/tmp/cc6SGh7Z.s:16: Error: junk at end of line: `,0'

This code is extracted from libatomic-ops (see http://bugs.debian.org/432654)
and is causing build failures for some powerpc packages.

4.2.1 and SVN don't fully build on my powerpc64 system (fails comparing objects
between stage2->3) but using the partially built stage3 xgcc the same problem
happens.

Thanks!

--- testcase ---

static inline unsigned long
load_acquire(volatile unsigned long *addr)
{
  unsigned long result;

  __asm__ __volatile__ (
"lwz %0,%1\n"
"cmpw cr7,%0,%0\n"
"bne- cr7,1f\n"
"1: isync\n"
: "=r" (result)
: "m"(*addr) : "memory", "cc");
  return result;
}

int
main(int argc, char **argv) {
  unsigned long *value, i, res;

  res = load_acquire(value + i);

  return 0;
}
--- end ---


-- 
   Summary: GCC outputs invalid assembly when using -O2
   Product: gcc
   Version: 4.2.1
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: inline-asm
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ianw at gelato dot unsw dot edu dot au
  GCC host triplet: powerpc64-unknown-linux-gnu


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



[Bug middle-end/33157] [4.3 Regression] cmov4.c fails on i686

2007-08-23 Thread ubizjak at gmail dot com


--- Comment #2 from ubizjak at gmail dot com  2007-08-24 06:04 ---
This patch

http://gcc.gnu.org/ml/gcc-patches/2007-03/msg01634.html

causes gcc.target/i386/cmov4.c regression.


-- 

ubizjak at gmail dot com changed:

   What|Removed |Added

 CC||steven at gcc dot gnu dot
   ||org
   Keywords|missed-optimization |


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



[Bug c++/32567] [4.3 regression] ICE on invalid use of parameter pack

2007-08-23 Thread jakub at gcc dot gnu dot org


--- Comment #2 from jakub at gcc dot gnu dot org  2007-08-24 06:55 ---
Subject: Bug 32567

Author: jakub
Date: Fri Aug 24 06:54:49 2007
New Revision: 127760

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=127760
Log:
PR c++/32567
* typeck.c (build_unary_op) : Return
error_mark_node right away if build_expr_type_conversion
returned it.

* g++.dg/parse/crash36.C: New test.

Added:
trunk/gcc/testsuite/g++.dg/parse/crash36.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/typeck.c
trunk/gcc/testsuite/ChangeLog


-- 


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



[Bug middle-end/33157] [4.3 Regression] cmov4.c fails on i686

2007-08-23 Thread steven at gcc dot gnu dot org


--- Comment #3 from steven at gcc dot gnu dot org  2007-08-24 06:36 ---
It's not even supposed to pass on i686:

/* { dg-options "-O2 -march=k8" } */

(see
http://gcc.gnu.org/viewcvs/trunk/gcc/testsuite/gcc.target/i386/cmov4.c?revision=127731&view=markup)

Note I'm not even going to look at this.  If anyone has a problem with that,
feel free to propose reverting my patch.


-- 


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



[Bug middle-end/33157] [4.3 Regression] cmov4.c fails on i686

2007-08-23 Thread bonzini at gnu dot org


--- Comment #4 from bonzini at gnu dot org  2007-08-24 06:50 ---
It's supposed to pass on K8 in 32-bit mode.  It did, and it does not.  However,
I think reverting the patch is not the right thing to do.

Anyway, given Steven's highly constructive remark, I think we can only wait for
it to be fixed on the tree level (PR33158).


-- 


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



[Bug middle-end/33157] [4.3 Regression] cmov4.c fails on i686

2007-08-23 Thread bonzini at gnu dot org


--- Comment #5 from bonzini at gnu dot org  2007-08-24 06:57 ---
Anyway, it fails on 64-bit mode too.


-- 


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