[Bug target/39457] [power7-meissner] unable to find a register to spill in class 'LINK_OR_CTR_REGS'

2009-03-18 Thread gnu at the-meissners dot org


--- Comment #5 from gnu at the-meissners dot org  2009-03-18 12:48 ---
Subject: Re:   New: [power7-meissner] unable to find a
register to spill in class 'LINK_OR_CTR_REGS'

If possible, please send mail on power7 to meiss...@linux.vnet.ibm.com.  I
don't read mail on my home account (g...@the-meissners.org) as frequently as I
do on the work email.


-- 


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



[Bug target/4605] [alpha-osf]mips-tfile & spaced directory names

2009-01-13 Thread gnu at the-meissners dot org


--- Comment #15 from gnu at the-meissners dot org  2009-01-13 23:13 ---
I suspect this needs to be solved in gcc.c with the specs handling, and you
probably need something to quote the white space in filename, so that it
doesn't break the file into separate arguments.  Only some alpha and mips port
use ASM_FINAL_SPEC which calls mips-tfile.

I must admit that when I wrote mips-tfile as a quick hack in 1990 to get around
the problem of having to use the MIPS assembler which provided no debug
inteferface until a MIPS port of GAS was done, that the hack would still be in
use 18 years later.


-- 


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



[Bug libstdc++/38421] New: libstdc++-v3/include/tr1/ell_integral.tcc contains __ea identifier

2008-12-05 Thread gnu at the-meissners dot org
The SPU port is adding support for named address spaces, and will be adding the
__ea keyword as a type qualifier.  At the moment, the named address support is
for C only, but at some point in the future, it might be desirable to add named
address support to C++ as well.  If C++ support is added, then the
libstdc++-v3/include/tr1/ell_integral.tcc file needs to be changed to not use
the __ea identifier.


-- 
   Summary: libstdc++-v3/include/tr1/ell_integral.tcc contains __ea
identifier
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: minor
  Priority: P3
 Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: gnu at the-meissners dot org
 GCC build triplet: x86_64-gnu-linux
  GCC host triplet: x86_64-gnu-linux
GCC target triplet: spu-elf


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



[Bug c/38416] c-parser.c puts pragma_kind as a 7 bit field, when 8 will generate better code

2008-12-05 Thread gnu at the-meissners dot org


--- Comment #1 from gnu at the-meissners dot org  2008-12-05 19:17 ---
Created an attachment (id=16833)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=16833&action=view)
Trivial patch to fix the problem.


-- 


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



[Bug c/38416] New: c-parser.c puts pragma_kind as a 7 bit field, when 8 will generate better code

2008-12-05 Thread gnu at the-meissners dot org
I was modifying the named address support to add the named address keywords via
the C keyword tables rather than via a target hook, and I noticed the c_token
structure has pragma_kind as a 7 bit field.  All of the previous bit fields are
8 bits in size, and next field is a tree, so we are not saving any space by
declaring the field to be 7 bits instead of 8, which would allow byte
loads/stores to be used to access the field.  Here is the declaration.

typedef struct c_token GTY (())
{
  /* The kind of token.  */
  ENUM_BITFIELD (cpp_ttype) type : 8;
  /* If this token is a CPP_NAME, this value indicates whether also
 declared as some kind of type.  Otherwise, it is C_ID_NONE.  */
  ENUM_BITFIELD (c_id_kind) id_kind : 8;
  /* If this token is a keyword, this value indicates which keyword.
 Otherwise, this value is RID_MAX.  */
  ENUM_BITFIELD (rid) keyword : 8;
  /* If this token is a CPP_PRAGMA, this indicates the pragma that
 was seen.  Otherwise it is PRAGMA_NONE.  */
  ENUM_BITFIELD (pragma_kind) pragma_kind : 7;
  /* The value associated with this token, if any.  */
  tree value;
  /* The location at which this token was found.  */
  location_t location;
} c_token;


-- 
   Summary: c-parser.c puts pragma_kind as a 7 bit field, when 8
will generate better code
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: trivial
  Priority: P3
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: gnu at the-meissners dot org
 GCC build triplet: x86_64-gnu-linux
  GCC host triplet: x86_64-gnu-linux
GCC target triplet: x86_64-gnu-linux


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



[Bug testsuite/38025] [4.4 Regression] gcc.target/spu/intrinsics-1.c test fails

2008-12-02 Thread gnu at the-meissners dot org


--- Comment #4 from gnu at the-meissners dot org  2008-12-02 23:26 ---
Patch applied to tree on November 5th.


-- 

gnu at the-meissners dot org changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED


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



[Bug target/38025] New: gcc.target/spu/intrinsics-1.c test fails

2008-11-05 Thread gnu at the-meissners dot org
The testsuite gcc.target/spu/intrinsics-1.c fails with a compilation error:
/home/meissner/fsf-src/trunk/gcc/testsuite/gcc.target/spu/intrinsics-1.c: In
function ‘f’:
/home/meissner/fsf-src/trunk/gcc/testsuite/gcc.target/spu/intrinsics-1.c:12:
error: parameter list does not match a valid signature for spu_cmpgt()
/home/meissner/fsf-src/trunk/gcc/testsuite/gcc.target/spu/intrinsics-1.c:13:
warning: passing argument 2 of ‘__builtin_spu_cmpgt_11’ makes integer from
pointer without a cast
/home/meissner/fsf-src/trunk/gcc/testsuite/gcc.target/spu/intrinsics-1.c:13:
note: expected ‘int’ but argument is of type ‘int *’
/home/meissner/fsf-src/trunk/gcc/testsuite/gcc.target/spu/intrinsics-1.c:14:
error: parameter list does not match a valid signature for spu_cmpgt()
/home/meissner/fsf-src/trunk/gcc/testsuite/gcc.target/spu/intrinsics-1.c:16:
note: use -flax-vector-conversions to permit conversions between vectors with
differing element types or numbers of subparts
/home/meissner/fsf-src/trunk/gcc/testsuite/gcc.target/spu/intrinsics-1.c:16:
error: incompatible types when assigning to type ‘int __vector__’ from type
‘unsigned int __vector__’


-- 
   Summary: gcc.target/spu/intrinsics-1.c test fails
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: gnu at the-meissners dot org
  GCC host triplet: powerpc64-unknown-linux-gnu
GCC target triplet: spu-elf


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



[Bug target/37841] New: SPU compiler is not complaint with the ABI

2008-10-15 Thread gnu at the-meissners dot org
Functions with more than 72 arguments, pass char/short arguments 73 and higher
in the wrong position in the quadword stored on the stack.  This is due to the
char/short not being at offset 0 of the word (char/short are stored in the
bottom of the first int in the quadword).


-- 
   Summary: SPU compiler is not complaint with the ABI
   Product: gcc
   Version: 4.4.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: gnu at the-meissners dot org
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: spu-elf


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



[Bug target/36936] [4.4 Regression]: Revision 138075 breaks cmove

2008-07-25 Thread gnu at the-meissners dot org


--- Comment #5 from gnu at the-meissners dot org  2008-07-25 18:08 ---
Subject: Re:  [4.4 Regression]: Revision 138075 breaks
cmove

On Fri, Jul 25, 2008 at 05:15:17PM -, hjl dot tools at gmail dot com wrote:
> 
> 
> --- Comment #3 from hjl dot tools at gmail dot com  2008-07-25 17:15 
> ---
> (In reply to comment #2)
> >
> > However, that would break using attribute((option("arch=i386"))) to turn off
> > cmoves.  I suspect the patch needs to be reworked.
> > 
> 
> Does revision 138075 include a testcase for this?

No, but I was trying to explain what the motativation for the line was.


-- 


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



[Bug target/36936] [4.4 Regression]: Revision 138075 breaks cmove

2008-07-25 Thread gnu at the-meissners dot org


--- Comment #2 from gnu at the-meissners dot org  2008-07-25 16:45 ---
Subject: Re:  [4.4 Regression]: Revision 138075 breaks
cmove

On Fri, Jul 25, 2008 at 03:36:51PM -, hjl dot tools at gmail dot com wrote:
> 
> 
> --- Comment #1 from hjl dot tools at gmail dot com  2008-07-25 15:36 
> ---
> I believe this bug was introduced by
> 
> @@ -2743,11 +3118,13 @@ override_options (void)
>&& !(target_flags & MASK_ACCUMULATE_OUTGOING_ARGS))
>  {
>if (target_flags_explicit & MASK_ACCUMULATE_OUTGOING_ARGS)
> -   warning (0, "stack probing requires -maccumulate-outgoing-args "
> -"for correctness");
> +   warning (0, "stack probing requires %saccumulate-outgoing-args%s "
> +"for correctness", prefix, suffix);
>target_flags |= MASK_ACCUMULATE_OUTGOING_ARGS;
>  }
> 
> +  TARGET_CMOVE = 0;
> +
>/* For sane SSE instruction set generation we need fcomi instruction.
>   It is safe to enable all CMOVE instructions.  */
>if (TARGET_SSE)

However, that would break using attribute((option("arch=i386"))) to turn off
cmoves.  I suspect the patch needs to be reworked.



-- 


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



[Bug bootstrap/36907] [4.4 Regression]: Gcc failed to bootstrap

2008-07-24 Thread gnu at the-meissners dot org


--- Comment #20 from gnu at the-meissners dot org  2008-07-24 20:21 ---
Subject: Re:  [4.4 Regression]: Gcc failed to bootstrap

On Thu, Jul 24, 2008 at 08:14:35PM -, hjl dot tools at gmail dot com wrote:
> 
> 
> --- Comment #19 from hjl dot tools at gmail dot com  2008-07-24 20:14 
> ---
> (In reply to comment #18)
> > Subject: Re:  [4.4 Regression]: Gcc failed to bootstrap
> > 
> > Yes, I came to the same conclusion when trying a bootstrap.  This patch 
> > adds a
> > new SECONDARY_OVERRIDE_OPTION to be run in the recursive case, and defined 
> > it
> > in the ia64.
> > 
> 
> Don't we also need it for i386 to handle
> 
>   /* When scheduling description is not available, disable scheduler pass
>  so it won't slow down the compilation and make x87 code slower.  */
>   if (!TARGET_SCHEDULE)
> flag_schedule_insns_after_reload = flag_schedule_insns = 0;

You are right those should be added.


-- 


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



[Bug bootstrap/36907] [4.4 Regression]: Gcc failed to bootstrap

2008-07-24 Thread gnu at the-meissners dot org


--- Comment #18 from gnu at the-meissners dot org  2008-07-24 20:11 ---
Subject: Re:  [4.4 Regression]: Gcc failed to bootstrap

On Thu, Jul 24, 2008 at 07:33:01PM -, hjl dot tools at gmail dot com wrote:
> 
> 
> --- Comment #17 from hjl dot tools at gmail dot com  2008-07-24 19:32 
> ---
> (In reply to comment #16)
> > I haven't done a bootstrap built yet, but could you try this patch on the
> > ia-64?  When I try it via a cross compiler, it works fine, but I wonder 
> > whether
> > random ports will do weird things (like leak memory) if OVERRIDE_OPTIONS is 
> > run
> > a second time.  I suspect we may need a macro that says whether it is safe 
> > to
> > run OVERRIDE_OPTIONS a second time.
> > 
> > 2008-07-24  Michael Meissner  <[EMAIL PROTECTED]>
> > 
> > * opts.c (decode_options): Rerun OVERRIDE_OPTIONS when being run a
> > second time to allow the backend to override the default options.
> > 
> 
> Taking a look at override_options in i386.c, I am not sure
> running it more than once is a good idea.

Yes, I came to the same conclusion when trying a bootstrap.  This patch adds a
new SECONDARY_OVERRIDE_OPTION to be run in the recursive case, and defined it
in the ia64.

2008-07-24  Michael Meissner  <[EMAIL PROTECTED]>

* opts.c (decode_options): Run SECONDARY_OVERRIDE_OPTIONS if it is
defined when being run a second time to allow the backend to
override the default options.

* config/ia64/ia64.h (SECONDARY_OVERRIDE_OPTIONS): Define to be
the same as OVERRIDE_OPTIONS.

* doc/tm.texi (SECONDARY_OVERRIDE_OPTIONS): Document.

Index: gcc/doc/tm.texi
===
--- gcc/doc/tm.texi (revision 138117)
+++ gcc/doc/tm.texi (working copy)
@@ -814,6 +814,12 @@ Don't use this macro to turn on various 
 @option{-O}.  That is what @code{OPTIMIZATION_OPTIONS} is for.
 @end defmac

[EMAIL PROTECTED] SECONDARY_OVERRIDE_OPTIONS
+This is similar to @code{OVERRIDE_OPTIONS} but it is run after the
+compiler processes the @code{optimize}, @code{hot}, or @code{cold}
+attributes to change the optimization options.
[EMAIL PROTECTED] defmac
+
 @defmac C_COMMON_OVERRIDE_OPTIONS
 This is similar to @code{OVERRIDE_OPTIONS} but is only used in the C
 language frontends (C, Objective-C, C++, Objective-C++) and so can be
Index: gcc/opts.c
===
--- gcc/opts.c  (revision 138117)
+++ gcc/opts.c  (working copy)
@@ -1066,6 +1066,12 @@ decode_options (unsigned int argc, const
   flag_unwind_tables = targetm.unwind_tables_default;
 }

+#ifdef SECONDARY_OVERRIDE_OPTIONS
+  /* Some machines may reject certain combinations of options.  */
+  if (! first_time_p)
+SECONDARY_OVERRIDE_OPTIONS;
+#endif
+
 #ifdef OPTIMIZATION_OPTIONS
   /* Allow default optimizations to be specified on a per-machine basis.  */
   OPTIMIZATION_OPTIONS (optimize, optimize_size);
Index: gcc/config/ia64/ia64.h
===
--- gcc/config/ia64/ia64.h  (revision 138117)
+++ gcc/config/ia64/ia64.h  (working copy)
@@ -121,6 +121,11 @@ extern enum processor_type ia64_tune;

 #define OVERRIDE_OPTIONS ia64_override_options ()

+/* Like OVERRIDE_OPTIONS, but run after the optimize, hot, or cold attributes
+   are processed.  */
+
+#define SECONDARY_OVERRIDE_OPTIONS ia64_override_options ()
+
 /* Some machines may desire to change what optimizations are performed for
various optimization levels.  This macro, if defined, is executed once just
after the optimization level is determined and before the remainder of the


-- 


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



[Bug bootstrap/36907] [4.4 Regression]: Gcc failed to bootstrap

2008-07-24 Thread gnu at the-meissners dot org


--- Comment #16 from gnu at the-meissners dot org  2008-07-24 19:19 ---
Subject: Re:  [4.4 Regression]: Gcc failed to bootstrap

On Thu, Jul 24, 2008 at 05:49:02PM -, hjl dot tools at gmail dot com wrote:
> 
> 
> --- Comment #15 from hjl dot tools at gmail dot com  2008-07-24 17:49 
> ---
> I don't think the middle-end should change optimization options
> which have been overridden by the backend.
> 
> 
> -- 
> 
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36907
> 
> --- You are receiving this mail because: ---
> You are on the CC list for the bug, or are watching someone who is.

I haven't done a bootstrap built yet, but could you try this patch on the
ia-64?  When I try it via a cross compiler, it works fine, but I wonder whether
random ports will do weird things (like leak memory) if OVERRIDE_OPTIONS is run
a second time.  I suspect we may need a macro that says whether it is safe to
run OVERRIDE_OPTIONS a second time.

2008-07-24  Michael Meissner  <[EMAIL PROTECTED]>

* opts.c (decode_options): Rerun OVERRIDE_OPTIONS when being run a
second time to allow the backend to override the default options.

Index: gcc/opts.c
===
--- gcc/opts.c  (revision 138117)
+++ gcc/opts.c  (working copy)
@@ -1066,6 +1066,12 @@ decode_options (unsigned int argc, const
   flag_unwind_tables = targetm.unwind_tables_default;
 }

+#ifdef OVERRIDE_OPTIONS
+  /* Some machines may reject certain combinations of options.  */
+  if (! first_time_p)
+OVERRIDE_OPTIONS;
+#endif
+
 #ifdef OPTIMIZATION_OPTIONS
   /* Allow default optimizations to be specified on a per-machine basis.  */
   OPTIMIZATION_OPTIONS (optimize, optimize_size);


-- 


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



[Bug bootstrap/36918] [4.4 regression] Bootstrap failure on sparc: assertion failure in options.c

2008-07-24 Thread gnu at the-meissners dot org


--- Comment #5 from gnu at the-meissners dot org  2008-07-24 18:49 ---
Subject: Re:  [4.4 regression] Bootstrap failure on
sparc: assertion failure in options.c

On Thu, Jul 24, 2008 at 06:36:20PM -, andreast at gcc dot gnu dot org
wrote:
> 
> 
> --- Comment #3 from andreast at gcc dot gnu dot org  2008-07-24 18:36 
> ---
> I bootstrapped choice 1. No regressions.
> 
> I also prefer to save space where possible. So I'd like to avoid choice 3.
> 
> Can we also use 255 or 127 as value for DEFAULT_PCC_STRUCT_RETURN?

Just to echo what I said in IRC for bugzilla, right now you can use 255 or 127.
Using 127 is perhaps better in case the default is changed to use signed bytes
in the future, and 127 will work either way.


-- 


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



[Bug bootstrap/36918] [4.4 regression] Bootstrap failure on sparc: assertion failure in options.c

2008-07-24 Thread gnu at the-meissners dot org


--- Comment #2 from gnu at the-meissners dot org  2008-07-24 18:26 ---
Subject: Re:  [4.4 regression] Bootstrap failure on
sparc: assertion failure in options.c

On Thu, Jul 24, 2008 at 05:21:10PM -, ro at gcc dot gnu dot org wrote:
> 
> 
> --- Comment #1 from ro at gcc dot gnu dot org  2008-07-24 17:21 ---
> Michael, could you have a look?  This seems to have been introduced by this
> change:
> 
> 2008-07-23  Michael Meissner  <[EMAIL PROTECTED]>
> Karthik Kumar  <[EMAIL PROTECTED]>
> [...]
> * optc-gen.awk: Add support for TargetSave to allow a back end to
> declare new fields that need to be saved when using function
> specific options.  Include flags.h and target.h in the options.c
> source.  Add support for Save to indicate which options can be set
> for individual functions.  Generate cl_optimize_save,
> cl_optimize_restore, cl_optimize_print, cl_target_option_save,
> cl_target_option_restore, cl_target_option_print functions to
> allow functions to use different optimization or target options.
> 
> and sparc-sun-solaris2.10 is primary platform for 4.4.
> 
> 
> -- 
> 
> ro at gcc dot gnu dot org changed:
> 
>What|Removed |Added
> ------------------------
>  CC||gnu at the-meissners dot org
> 
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36918
> 
> --- You are receiving this mail because: ---
> You are on the CC list for the bug, or are watching someone who is.

This is due to DEFAULT_PCC_STRUCT_RETURN being defined as -1.  The code to
store and restore optimization options is trying to use smaller amount of
space, and so it stores the flag values into an unsigned byte instead of an
int.  The code in question is doing an assert to make sure that the value is in
range, so that when the value is restored, it get the same value.

Three possible solutions exist:
1) In sparc.h change DEFAULT_PCC_STRUCT_RETURN to be 2 instead of -1;
2) Change the default space to be signed bytes instead of unsigned;
3) Save ints instead of bytes and don't try to save space.


-- 


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



[Bug bootstrap/36907] [4.4 Regression]: Gcc failed to bootstrap

2008-07-23 Thread gnu at the-meissners dot org


--- Comment #10 from gnu at the-meissners dot org  2008-07-23 19:06 ---
Subject: Re:  [4.4 Regression]: Gcc failed to bootstrap

On Wed, Jul 23, 2008 at 01:46:30PM -, hjl dot tools at gmail dot com wrote:
> 
> 
> --- Comment #4 from hjl dot tools at gmail dot com  2008-07-23 13:46 
> ---
> (In reply to comment #3)
> > The problem on Fedora 9/x86-64 may be due to FILE is undeclared in
> > 
> > extern void cl_optimization_print (FILE *, int, struct cl_optimization *);
> > extern void cl_target_option_print (FILE *, int, struct cl_target_option *);
> > 
> > in options.h.
> > 
> 
> It happens when building libobjc.
> 
> 
> -- 
> 
> 
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36907
> 
> --- You are receiving this mail because: ---
> You are on the CC list for the bug, or are watching someone who is.

I checked in the patch as revision 138091.  Sorry about the breakage.


-- 


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



[Bug bootstrap/36907] [4.4 Regression]: Gcc failed to bootstrap

2008-07-23 Thread gnu at the-meissners dot org


--- Comment #6 from gnu at the-meissners dot org  2008-07-23 15:22 ---
Subject: Re:  [4.4 Regression]: Gcc failed to bootstrap

On Wed, Jul 23, 2008 at 01:46:30PM -, hjl dot tools at gmail dot com wrote:
> 
> 
> --- Comment #4 from hjl dot tools at gmail dot com  2008-07-23 13:46 
> ---
> (In reply to comment #3)
> > The problem on Fedora 9/x86-64 may be due to FILE is undeclared in
> > 
> > extern void cl_optimization_print (FILE *, int, struct cl_optimization *);
> > extern void cl_target_option_print (FILE *, int, struct cl_target_option *);
> > 
> > in options.h.
> > 
> 
> It happens when building libobjc.

I didn't have objective c, java, or ADA on the system.  I'm going to kick off a
build shortly with the following patch to see if it allows objc to build:

Index: gcc/optc-gen.awk
===
--- gcc/optc-gen.awk(revision 138086)
+++ gcc/optc-gen.awk(working copy)
@@ -225,7 +225,7 @@ for (i = 0; i < n_opts; i++) {
 print "};"

 print "";
-print "#if !defined(GCC_DRIVER) && !defined(IN_LIBGCC2)"
+print "#if !defined(GCC_DRIVER) && !defined(IN_LIBGCC2) &&
!defined(IN_TARGET_LIBS)"
 print "";
 print "/* Save optimization variables into a structure.  */"
 print "void";
Index: gcc/opth-gen.awk
===
--- gcc/opth-gen.awk(revision 138086)
+++ gcc/opth-gen.awk(working copy)
@@ -95,7 +95,7 @@ print ""
 # Also, order the structure so that pointer fields occur first, then int
 # fields, and then char fields to provide the best packing.

-print "#if !defined(GCC_DRIVER) && !defined(IN_LIBGCC2)"
+print "#if !defined(GCC_DRIVER) && !defined(IN_LIBGCC2) &&
!defined(IN_TARGET_LIBS)"
 print ""
 print "/* Structure to save/restore optimization and target specific options. 
*/";
 print "struct cl_optimization GTY(())";


-- 


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



[Bug tree-optimization/36436] -ftree-vrp -O1 -msse5 -ftree-vectorize leads to segfault during garbage collection

2008-06-04 Thread gnu at the-meissners dot org


--- Comment #1 from gnu at the-meissners dot org  2008-06-04 19:36 ---
Created an attachment (id=15719)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15719&action=view)
Preprocessed source code that shows the problem.


-- 


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



[Bug tree-optimization/36436] New: -ftree-vrp -O1 -msse5 -ftree-vectorize leads to segfault during garbage collection

2008-06-04 Thread gnu at the-meissners dot org
If I compile the attached preprocessed file with -O1 -msse5 -ftree-vectorize
-ftree-vrp (or -O3), the compiler does a segmentation fault while garbage
collecting.  If I use the -fno-tree-vrp switch, the program compiles fine, even
with -O3.

(gdb) r -O1 -msse5 -ftree-vectorize -ftree-vrp sse5.i
Starting program: /data-gold1/fsf-build/trunk/gcc/cc1 -O1 -msse5
-ftree-vectorize -ftree-vrp sse5.i
 vprintf getchar fgetc_unlocked getc_unlocked getchar_unlocked putchar
fputc_unlocked putc_unlocked putchar_unlocked feof_unlocked ferror_unlocked
atof atoi atol atoll gnu_dev_major gnu_dev_minor gnu_dev_makedev __strcspn_c1
__strcspn_c2 __strcspn_c3 __strspn_c1 __strspn_c2 __strspn_c3 __strpbrk_c2
__strpbrk_c3 __strtok_r_1c __strsep_1c __strsep_2c __strsep_3c _mm_empty
_m_empty _mm_cvtsi32_si64 _m_from_int _m_from_int64 _mm_cvtsi64_m64
_mm_cvtsi64x_si64 _mm_set_pi64x _mm_cvtsi64_si32 _m_to_int _m_to_int64
_mm_cvtm64_si64 _mm_cvtsi64_si64x _mm_packs_pi16 _m_packsswb _mm_packs_pi32
_m_packssdw _mm_packs_pu16 _m_packuswb _mm_unpackhi_pi8 _m_punpckhbw
_mm_unpackhi_pi16 _m_punpckhwd _mm_unpackhi_pi32 _m_punpckhdq _mm_unpacklo_pi8
_m_punpcklbw _mm_unpacklo_pi16 _m_punpcklwd _mm_unpacklo_pi32 _m_punpckldq
_mm_add_pi8 _m_paddb _mm_add_pi16 _m_paddw _mm_add_pi32 _m_paddd _mm_add_si64
_mm_adds_pi8 _m_paddsb _mm_adds_pi16 _m_paddsw _mm_adds_pu8 _m_paddusb
_mm_adds_pu16 _m_paddusw _mm_sub_pi8 _m_psubb _mm_sub_pi16 _m_psubw
_mm_sub_pi32 _m_psubd _mm_sub_si64 _mm_subs_pi8 _m_psubsb _mm_subs_pi16
_m_psubsw _mm_subs_pu8 _m_psubusb _mm_subs_pu16 _m_psubusw _mm_madd_pi16
_m_pmaddwd _mm_mulhi_pi16 _m_pmulhw _mm_mullo_pi16 _m_pmullw _mm_sll_pi16
_m_psllw _mm_slli_pi16 _m_psllwi _mm_sll_pi32 _m_pslld _mm_slli_pi32 _m_pslldi
_mm_sll_si64 _m_psllq _mm_slli_si64 _m_psllqi _mm_sra_pi16 _m_psraw
_mm_srai_pi16 _m_psrawi _mm_sra_pi32 _m_psrad _mm_srai_pi32 _m_psradi
_mm_srl_pi16 _m_psrlw _mm_srli_pi16 _m_psrlwi _mm_srl_pi32 _m_psrld
_mm_srli_pi32 _m_psrldi _mm_srl_si64 _m_psrlq _mm_srli_si64 _m_psrlqi
_mm_and_si64 _m_pand _mm_andnot_si64 _m_pandn _mm_or_si64 _m_por _mm_xor_si64
_m_pxor _mm_cmpeq_pi8 _m_pcmpeqb _mm_cmpgt_pi8 _m_pcmpgtb _mm_cmpeq_pi16
_m_pcmpeqw _mm_cmpgt_pi16 _m_pcmpgtw _mm_cmpeq_pi32 _m_pcmpeqd _mm_cmpgt_pi32
_m_pcmpgtd _mm_setzero_si64 _mm_set_pi32 _mm_set_pi16 _mm_set_pi8 _mm_setr_pi32
_mm_setr_pi16 _mm_setr_pi8 _mm_set1_pi32 _mm_set1_pi16 _mm_set1_pi8 _mm_malloc
_mm_free _mm_setzero_ps _mm_add_ss _mm_sub_ss _mm_mul_ss _mm_div_ss _mm_sqrt_ss
_mm_rcp_ss _mm_rsqrt_ss _mm_min_ss _mm_max_ss _mm_add_ps _mm_sub_ps _mm_mul_ps
_mm_div_ps _mm_sqrt_ps _mm_rcp_ps _mm_rsqrt_ps _mm_min_ps _mm_max_ps _mm_and_ps
_mm_andnot_ps _mm_or_ps _mm_xor_ps _mm_cmpeq_ss _mm_cmplt_ss _mm_cmple_ss
_mm_cmpgt_ss _mm_cmpge_ss _mm_cmpneq_ss _mm_cmpnlt_ss _mm_cmpnle_ss
_mm_cmpngt_ss _mm_cmpnge_ss _mm_cmpord_ss _mm_cmpunord_ss _mm_cmpeq_ps
_mm_cmplt_ps _mm_cmple_ps _mm_cmpgt_ps _mm_cmpge_ps _mm_cmpneq_ps _mm_cmpnlt_ps
_mm_cmpnle_ps _mm_cmpngt_ps _mm_cmpnge_ps _mm_cmpord_ps _mm_cmpunord_ps
_mm_comieq_ss _mm_comilt_ss _mm_comile_ss _mm_comigt_ss _mm_comige_ss
_mm_comineq_ss _mm_ucomieq_ss _mm_ucomilt_ss _mm_ucomile_ss _mm_ucomigt_ss
_mm_ucomige_ss _mm_ucomineq_ss _mm_cvtss_si32 _mm_cvt_ss2si _mm_cvtss_si64
_mm_cvtss_si64x _mm_cvtps_pi32 _mm_cvt_ps2pi _mm_cvttss_si32 _mm_cvtt_ss2si
_mm_cvttss_si64 _mm_cvttss_si64x _mm_cvttps_pi32 _mm_cvtt_ps2pi _mm_cvtsi32_ss
_mm_cvt_si2ss _mm_cvtsi64_ss _mm_cvtsi64x_ss _mm_cvtpi32_ps _mm_cvt_pi2ps
_mm_cvtpi16_ps _mm_cvtpu16_ps _mm_cvtpi8_ps _mm_cvtpu8_ps _mm_cvtpi32x2_ps
_mm_cvtps_pi16 _mm_cvtps_pi8 _mm_shuffle_ps _mm_unpackhi_ps _mm_unpacklo_ps
_mm_loadh_pi _mm_storeh_pi _mm_movehl_ps _mm_movelh_ps _mm_loadl_pi
_mm_storel_pi _mm_movemask_ps _mm_getcsr _MM_GET_EXCEPTION_STATE
_MM_GET_EXCEPTION_MASK _MM_GET_ROUNDING_MODE _MM_GET_FLUSH_ZERO_MODE _mm_setcsr
_MM_SET_EXCEPTION_STATE _MM_SET_EXCEPTION_MASK _MM_SET_ROUNDING_MODE
_MM_SET_FLUSH_ZERO_MODE _mm_set_ss _mm_set1_ps _mm_set_ps1 _mm_load_ss
_mm_load1_ps _mm_load_ps1 _mm_load_ps _mm_loadu_ps _mm_loadr_ps _mm_set_ps
_mm_setr_ps _mm_store_ss _mm_cvtss_f32 _mm_store_ps _mm_storeu_ps _mm_store1_ps
_mm_store_ps1 _mm_storer_ps _mm_move_ss _mm_extract_pi16 _m_pextrw
_mm_insert_pi16 _m_pinsrw _mm_max_pi16 _m_pmaxsw _mm_max_pu8 _m_pmaxub
_mm_min_pi16 _m_pminsw _mm_min_pu8 _m_pminub _mm_movemask_pi8 _m_pmovmskb
_mm_mulhi_pu16 _m_pmulhuw _mm_shuffle_pi16 _m_pshufw _mm_maskmove_si64
_m_maskmovq _mm_avg_pu8 _m_pavgb _mm_avg_pu16 _m_pavgw _mm_sad_pu8 _m_psadbw
_mm_prefetch _mm_stream_pi _mm_stream_ps _mm_sfence _mm_pause _mm_set_sd
_mm_set1_pd _mm_set_pd1 _mm_set_pd _mm_setr_pd _mm_setzero_pd _mm_move_sd
_mm_load_pd _mm_loadu_pd _mm_load1_pd _mm_load_sd _mm_load_pd1 _mm_loadr_pd
_mm_store_pd _mm_storeu_pd _mm_store_sd _mm_cvtsd_f64 _mm_storel_pd
_mm_storeh_pd _mm_store1_pd _mm_store_pd1 _mm_storer_pd _mm_cvtsi128_si32
_mm_cvtsi128_si64 _mm_cvtsi128_si64x _mm_add_pd _mm_add_sd _mm_sub_pd
_mm_sub_sd _mm_mul_pd _mm_mul_sd _mm_div_pd _mm_div_sd _mm_sqrt_pd _mm_sqrt_sd
_mm_min_pd _mm_min_sd _mm_m

[Bug target/36224] vec_widen_smult_{hi,lo}_v4si generates pmuludq instruction

2008-05-12 Thread gnu at the-meissners dot org


--- Comment #1 from gnu at the-meissners dot org  2008-05-12 20:00 ---
Created an attachment (id=15631)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15631&action=view)
Test case for bug 36224


-- 


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



[Bug target/36224] New: vec_widen_smult_{hi,lo}_v4si generates pmuludq instruction

2008-05-12 Thread gnu at the-meissners dot org
The vec_widen_smult_{hi,lo}_v4si functions are incorrect, in that they generate
the pmuludq instruction, which does a 32x32->64 unsigned multiply.  For
example, multiplying -13 * 15 = gives 64424509245 with the current code, when
it should give -195.

The sse5 instructions pmacsdqh and pmacsdql could do this instruction, but not
anything in the standard sse2 set.


-- 
   Summary: vec_widen_smult_{hi,lo}_v4si generates pmuludq
instruction
   Product: gcc
   Version: 4.3.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: gnu at the-meissners dot org
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu


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



[Bug regression/36039] -ftree-vectorize aborts on simple integer multiply vectorization

2008-04-24 Thread gnu at the-meissners dot org


--- Comment #1 from gnu at the-meissners dot org  2008-04-24 21:49 ---
Created an attachment (id=15528)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15528&action=view)
This is the test case that fails.


-- 


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



[Bug regression/36039] New: -ftree-vectorize aborts on simple integer multiply vectorization

2008-04-24 Thread gnu at the-meissners dot org
=OPTAB_LIB_WIDEN) at
/proj/gcc/fsf-src/gcc-4_2-branch/gcc/optabs.c:1156
(gdb) c
Continuing.

Breakpoint 3, expand_simple_binop (mode=V2SImode, code=VEC_SELECT,
op0=0x2f777ae0, op1=0x2f76c640, target=0x0, unsignedp=1,
methods=OPTAB_LIB_WIDEN) at /proj/gcc/fsf-src/gcc-4_2-branch/gcc/optabs.c:1156
(gdb) print op0
$4 = (rtx) 0x2f777ae0
(gdb) pr
(reg:V4SI 87)
(gdb) print op1
$5 = (rtx) 0x2f76c640
(gdb) pr
(parallel [
(const_int 0 [0x0])
(const_int 2 [0x2])
])
(gdb) print code
$6 = VEC_SELECT
(gdb) print binop
$7 = (optab) 0x0
(gdb) whatis code_to_optab
type = optab [125]
(gdb) print/x code
$8 = 0x0
(gdb) up
#1  0x0055fa7d in force_operand (value=0x2f773660, target=0x0) at
/proj/gcc/fsf-src/gcc-4_2-branch/gcc/expr.c:6084


-- 
   Summary: -ftree-vectorize aborts on simple integer multiply
vectorization
   Product: gcc
   Version: 4.2.4
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: regression
AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: gnu at the-meissners dot org
 GCC build triplet: x86_64-unknown-linux-gnu
  GCC host triplet: x86_64-unknown-linux-gnu
GCC target triplet: x86_64-unknown-linux-gnu


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



[Bug target/22599] ICE with invalid asm usage

2005-07-21 Thread gnu at the-meissners dot org

--- Additional Comments From gnu at the-meissners dot org  2005-07-22 03:54 
---
I forgot to mention, the patch was against the mainline, sources current as of
July 20th.

-- 


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


[Bug rtl-optimization/17692] gcc -O hangs on glnxa64

2005-07-06 Thread gnu at the-meissners dot org

--- Additional Comments From gnu at the-meissners dot org  2005-07-06 21:46 
---
I compiled the sample on 3.3.6, and it did appear to hang.  The memory usage
wasn't that much, so it doesn't look like page faulting itself to death.  The
last phase that dumps its output with -da is 18.life, and 19.combine is empty.

-- 


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


[Bug rtl-optimization/17692] gcc -O hangs on glnxa64

2005-07-06 Thread gnu at the-meissners dot org

--- Additional Comments From gnu at the-meissners dot org  2005-07-06 20:59 
---
3.4.4 compiles the file fine on a machine with 2 gigabytes of local memory.  It
may be that the machine you were using is thrashing itself to death.

4.0.0 and 4.0.1-20050702 both give the following error:
gcc_glnxa64_hang.c: In function â:
gcc_glnxa64_hang.c:164: error: could not split insn
(insn:TI 676 664 759 (parallel [
(set (reg:DF 21 xmm0 [orig:59 t2$1 ] [59])
(if_then_else:DF (ungt:DF (reg:DF 21 xmm0 [orig:59 t2$1 ] [59])
(reg:DF 21 xmm0 [orig:58 t2$0 ] [58]))
(reg:DF 21 xmm0 [orig:59 t2$1 ] [59])
(reg:DF 21 xmm0 [orig:58 t2$0 ] [58])))
(clobber (reg:V2DF 22 xmm1))
]) 662 {*movdfcc_1_sse} (nil)
(expr_list:REG_UNUSED (reg:V2DF 22 xmm1)
(nil)))
gcc_glnxa64_hang.c:164: internal compiler error: in final_scan_insn, at 
final.c:2508
Please submit a full bug report,
with preprocessed source if appropriate.
See http://gcc.gnu.org/bugs.html> for instructions.

It is fixed on the mainline (checked on July 6th).

-- 


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


[Bug target/15397] [g77] c float function called from fortran gives wrong result

2005-07-06 Thread gnu at the-meissners dot org

--- Additional Comments From gnu at the-meissners dot org  2005-07-06 19:22 
---
FWIW, I tried this with the 4.0 compiler on an AMD64 system, and it doesn't fail
with gfortran.

I did bring over the 3.4.4 release, and tried it with g77, and it failed as
reported.  It passed if I used -m32 with the traditional x86 calling sequence.

If I link the 3.4.4 fortran object with the 4.0.0 C object, it fails.  If I link
the 4.0.0 fortran with the 3.4.4 C object, it passes.

Looking at the code for -O1, between 3.4.4 and 4.0.0, I see, the 4.0.0 
generates:
callfunct2_
movss   %xmm0, 12(%rsp)

and the 3.4.4 fortran generates:
callfunct2_
cvtsd2ss%xmm0, %xmm0
movss   %xmm0, 16(%rsp)

Ie, g77 is expecting float values to be returned as a double, and then doing the
conversion.

-- 


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