rep prefix doesn't work with Solaris 2.9 Sun assembler

2010-05-11 Thread Jay K

Solaris 2.9 x86 gcc 4.5.0 configure -without-gnu-as -with-as=/usr/ccs/bin/as

 
 => Assembly syntax errors in gcov.c whereever there is rep prefix.
 

I was actually looking for a problem with lock prefixes on 4.3 -- testing 
4.5.0, found this instead, which is about about the same.
 
 
See:
 http://gcc.gnu.org/viewcvs?view=revision&revision=127728
  for handling of the lock prefix in a separate instruction.
 
 
See: 
http://developers.sun.com/sunstudio/downloads/ssx/express_Feb2008_readme.html
 "You can now place lock/rep/repnz/repz/repe/repne prefix on the same line as 
the following instruction."
 
 
But I'd like to stay compatible with the existing Sun assembler 
at /usr/ccs/bin/as.
 
 
I considered just changing them all to \;, like there is rep\;ret, but
I noticed this:
sync.md:  "lock{%;| }or{l}\t{$0, (%%esp)|DWORD PTR [esp], 0}"
 

which appears to be an attempt to output Microsoft/Intel assembly, so I went
with the space usually and ; only for Darwin/Solaris, like how sync.md
was already using ; for Darwin.
 

Proposed patch below/attached.
  (-w to hide indent change)
 

I'll open a bug. And test it on some machines maybe.
Any marked with TARGET_64BIT I left alone. Maybe that is too inconsistent 
though.
 
 

diff -uw /home/jkrell/src/orig/gcc-4.5.0/gcc/config/i386/i386.c ./i386.c
--- /home/jkrell/src/orig/gcc-4.5.0/gcc/config/i386/i386.c Wed Apr  7 23:58:27 
2010
+++ ./i386.c Tue May 11 10:01:54 2010
@@ -11896,11 +11896,10 @@
return;
 
  case ';':
-#if TARGET_MACHO
+   if (TARGET_MACHO || TARGET_SOLARIS)
fputs (" ; ", file);
-#else
+   else
putc (' ', file);
-#endif
return;
 
  default:
diff -uw /home/jkrell/src/orig/gcc-4.5.0/gcc/config/i386/i386.h ./i386.h
--- /home/jkrell/src/orig/gcc-4.5.0/gcc/config/i386/i386.h Wed Mar 24 21:44:48 
2010
+++ ./i386.h Tue May 11 09:59:01 2010
@@ -467,6 +467,9 @@
redefines this to 1.  */
 #define TARGET_MACHO 0
 
+/* Like TARGET_MACHO, redefined in sol2.h. */
+#define TARGET_SOLARIS 0
+
 /* Likewise, for the Windows 64-bit ABI.  */
 #define TARGET_64BIT_MS_ABI (TARGET_64BIT && ix86_cfun_abi () == MS_ABI)
 
diff -uw /home/jkrell/src/orig/gcc-4.5.0/gcc/config/i386/i386.md ./i386.md
--- /home/jkrell/src/orig/gcc-4.5.0/gcc/config/i386/i386.md Wed Mar 24 19:49:49 
2010
+++ ./i386.md Tue May 11 09:49:05 2010
@@ -13811,7 +13811,7 @@
   [(return)
(unspec [(const_int 0)] UNSPEC_REP)]
   "reload_completed"
-  "rep\;ret"
+  "rep{%;| }ret"
   [(set_attr "length" "2")
(set_attr "atom_unit" "jeu")
(set_attr "length_immediate" "0")
@@ -17772,7 +17772,7 @@
  (mem:BLK (match_dup 4)))
(use (match_dup 5))]
   "!TARGET_64BIT"
-  "rep movs{l|d}"
+  "rep{%;| }movs{l|d}"
   [(set_attr "type" "str")
(set_attr "prefix_rep" "1")
(set_attr "memory" "both")
@@ -17808,7 +17808,7 @@
  (mem:BLK (match_dup 4)))
(use (match_dup 5))]
   "!TARGET_64BIT"
-  "rep movsb"
+  "rep{%;| }movsb"
   [(set_attr "type" "str")
(set_attr "prefix_rep" "1")
(set_attr "memory" "both")
@@ -18023,7 +18023,7 @@
(use (match_operand:SI 2 "register_operand" "a"))
(use (match_dup 4))]
   "!TARGET_64BIT"
-  "rep stos{l|d}"
+  "rep{%;| }stos{l|d}"
   [(set_attr "type" "str")
(set_attr "prefix_rep" "1")
(set_attr "memory" "store")
@@ -18056,7 +18056,7 @@
(use (match_operand:QI 2 "register_operand" "a"))
(use (match_dup 4))]
   "!TARGET_64BIT"
-  "rep stosb"
+  "rep{%;| }stosb"
   [(set_attr "type" "str")
(set_attr "prefix_rep" "1")
(set_attr "memory" "store")
@@ -18188,7 +18188,7 @@
(clobber (match_operand:SI 1 "register_operand" "=D"))
(clobber (match_operand:SI 2 "register_operand" "=c"))]
   "!TARGET_64BIT"
-  "repz cmpsb"
+  "repz{%;| }cmpsb"
   [(set_attr "type" "str")
(set_attr "mode" "QI")
(set_attr "prefix_rep" "1")])
@@ -18239,7 +18239,7 @@
(clobber (match_operand:SI 1 "register_operand" "=D"))
(clobber (match_operand:SI 2 "register_operand" "=c"))]
   "!TARGET_64BIT"
-  "repz cmpsb"
+  "repz{%;| }cmpsb"
   [(set_attr "type" "str")
(set_attr "mode" "QI")
(set_attr "prefix_rep" "1")])
@@ -18305,7 +18305,7 @@
(clobber (match_operand:SI 1 "register_operand" "=D"))
(clobber (reg:CC FLAGS_REG))]
   "!TARGET_64BIT"
-  "repnz scasb"
+  "repnz{%;| }scasb"
   [(set_attr "type" "str")
(set_attr "mode" "QI")
(set_attr "prefix_rep" "1")])
diff -uw /home/jkrell/src/orig/gcc-4.5.0/gcc/config/i386/sol2.h ./sol2.h
--- /home/jkrell/src/orig/gcc-4.5.0/gcc/config/i386/sol2.h Wed Mar 31 11:03:29 
2010
+++ ./sol2.h Tue May 11 10:02:17 2010
@@ -172,3 +172,6 @@
 #define TF_SIZE 113
 
 #define MD_UNWIND_SUPPORT "config/i386/sol2-unwind.h"
+
+#undef  TARGET_SOLARIS
+#define TARGET_SOLARIS 1
 
 
Thanks,
 - JayOnly in .: 1.txt
diff -uw /home/jkrell/src/orig/gcc-4.5.0/gcc/config/i386/i386.c ./i386.c
--- /home/jkrell/src/orig/gcc-4.5.0/gcc/config/i386/i386.c  Wed Apr  7 
23:58:27 2010
+++ ./i386.cTue May 11 10:01:54 2010
@@ -11896,11 +11896,10 @@
  retur

Re: rep prefix doesn't work with Solaris 2.9 Sun assembler

2010-05-11 Thread Eric Botcazou
> Proposed patch below/attached.
>   (-w to hide indent change)

See http://gcc.gnu.org/contribute.html for guidelines.

> I'll open a bug.

See http://gcc.gnu.org/bugs for guidelines.

Generally speaking, posting a patch inlined in a message on gcc@gcc.gnu.org 
will most likely result in it being lost and forgotten.  In order to report 
an issue, please open a ticket with bugzilla.  In order to submit a patch, 
please use gcc-patc...@gcc.gnu.org.  In both cases, follow the guidelines 
written down in the aforementioned documentation.  Thanks in advance.

-- 
Eric Botcazou


C/C++ AST

2010-05-11 Thread wolfgang8080
Hello All,

I want to know if it is possible to modify AST of the C/C++-Language.
What I would like to do is to add some arguments to some function calls or add 
statements somewhere in the tree.
Now I am looking for the root node to modify it. Which is the best pass for 
that? Is there anywhere sample code available?
I'm using gcc4.5 Source with the plugin interface...

Thanks, Wolfgang
-- 
GRATIS für alle GMX-Mitglieder: Die maxdome Movie-FLAT!
Jetzt freischalten unter http://portal.gmx.net/de/go/maxdome01


A question regarding bundling and NOPs insertion for VLIW architecture

2010-05-11 Thread Revital1 Eres

Hello,

I have a question regarding the process of bundling and NOPs insertion for
VLIW architecture
and I appreciate your answer:

I am calling the second scheduler from the machine reorg pass; similar to
what is done for IA64.
I now want to handle the bundling and NOPs insertion for VLIW architecture
with issue rate of 4
and I want to make sure I understand the process:

IIUC I can use the insns with TImode that the scheduler marked to indicate
a new cycle, so the
the question is how many nops to insert after that cycle, if any.
I noticed the following approach that was used in c6x which is mentioned
in:
http://archiv.tu-chemnitz.de/pub/2004/0176/data/index.html

"NOP Insertion and Parallel Scheduling
If the scheduler is run, it checks dependencies and tries to schedule the
instructions as to
minimize the processing cycles. The hooks TARGET_SCHED_REORDER(2) are
considered
to reorder the instructions in the ready cue in case the back end wants to
override the
default rules. I used the hooks to memorize the program cycle the
instruction is scheduled.
This value is stored in a hash table I created for that purpose. From the
cycle information
I can later determine how many NOPs have to be inserted between two
instructions. This
value then overrides the attribute value."

IA64 seems to have much more complicated approach for the bundling and NOPs
insertion and I wonder
if the reason is due to IA64 specific issues? or there is something I'm
missing in the approach
mentioned above?

Thanks in advance,
Revital



RE: rep prefix doesn't work with Solaris 2.9 Sun assembler

2010-05-11 Thread Jay K

Understood, but I'll have to stick to "small" changes as I can't get the papers.

Uros pointed to:
http://gcc.gnu.org/ml/gcc-patches/2010-05/msg00657.html

which appears to just be *very* coincident timing.
So I Rainer will fix it soon.
I have a patch now based on that discussion.

I used:
    case ';':
      if ((TARGET_MACHO || TARGET_SOLARIS) && ASSEMBLER_DIALECT == ASM_ATT)
        fputs (" ; ", file);
      else
        fputc (' ', file);
      return;

though even better might be to assume 64bit implies more recent assembler:

    case ';':
      if ((TARGET_MACHO || TARGET_SOLARIS) && ASSEMBLER_DIALECT == ASM_ATT && 
!TARGET_64BIT)
        fputs (" ; ", file);
      else
        fputc (' ', file);
      return;

I guess there was an obscure bug where -masm=intel didn't work for Darwin 
targets?.
What, people use -masm=intel and masm/nasm/yasm instead of gas? Or just to 
human read the output?

Thanks,
 - Jay


> From: ebotca...@adacore.com
> To: jay.kr...@cornell.edu
> Subject: Re: rep prefix doesn't work with Solaris 2.9 Sun assembler
> Date: Tue, 11 May 2010 10:35:12 +0200
> CC: gcc@gcc.gnu.org
>
>> Proposed patch below/attached.
>> (-w to hide indent change)
>
> See http://gcc.gnu.org/contribute.html for guidelines.
>
>> I'll open a bug.
>
> See http://gcc.gnu.org/bugs for guidelines.
>
> Generally speaking, posting a patch inlined in a message on gcc@gcc.gnu.org
> will most likely result in it being lost and forgotten. In order to report
> an issue, please open a ticket with bugzilla. In order to submit a patch,
> please use gcc-patc...@gcc.gnu.org. In both cases, follow the guidelines
> written down in the aforementioned documentation. Thanks in advance.
>
> --
> Eric Botcazou
  


Re: optimizing a DSO

2010-05-11 Thread Marc Glisse

On Tue, 11 May 2010, Jakub Jelinek wrote:


And you can use -Wl,-O1 (pass -O1 to the linker) to let the linker
determine optimal size of the hash table (minimum number of collisions
for reasonably sized section).


Was it considered enabling this automatically with -O3 (or -Ofast) when we 
know the linker is gnu?


--
Marc Glisse


Re: A question regarding bundling and NOPs insertion for VLIW architecture

2010-05-11 Thread Alexander Monakov


On Tue, 11 May 2010, Revital1 Eres wrote:

> 
> Hello,
> 
> I have a question regarding the process of bundling and NOPs insertion for
> VLIW architecture
> and I appreciate your answer:
> 
> I am calling the second scheduler from the machine reorg pass; similar to
> what is done for IA64.
> I now want to handle the bundling and NOPs insertion for VLIW architecture
> with issue rate of 4
> and I want to make sure I understand the process:
> 
> IIUC I can use the insns with TImode that the scheduler marked to indicate
> a new cycle, so the
> the question is how many nops to insert after that cycle, if any.
> I noticed the following approach that was used in c6x which is mentioned
> in:
> http://archiv.tu-chemnitz.de/pub/2004/0176/data/index.html
> 
> "NOP Insertion and Parallel Scheduling
> If the scheduler is run, it checks dependencies and tries to schedule the
> instructions as to
> minimize the processing cycles. The hooks TARGET_SCHED_REORDER(2) are
> considered
> to reorder the instructions in the ready cue in case the back end wants to
> override the
> default rules. I used the hooks to memorize the program cycle the
> instruction is scheduled.
> This value is stored in a hash table I created for that purpose. From the
> cycle information
> I can later determine how many NOPs have to be inserted between two
> instructions. This
> value then overrides the attribute value."
> 
> IA64 seems to have much more complicated approach for the bundling and NOPs
> insertion and I wonder
> if the reason is due to IA64 specific issues? or there is something I'm
> missing in the approach
> mentioned above?

>From skimming the paper I understand that the target processor is a 4-wide
VLIW with little or no instruction issue constraints (which insn type may go
in which bundle slot) and uses a non-interlocked pipeline, thus requiring NOP
insertion to avoid dependencies.  IA64 is different in both regards.

Bundling in ia64 is complicated because not all combinations of insn types are
possible in a bundle (a bundle contains three insns), and instruction issue
boundaries can appear in mid-bundles (ia64 architecture uses stop bits to
indicate parallel issue boundaries, and there are some bundle kinds with a
stop bit in between).  Incidentally, ia64 does not need NOP insertion to avoid
data dependency violation, because it uses scoreboarding to track register
dependencies.  Thus, NOP insertion is only needed to satisfy bundling
constraints.

I think the ia64 port in GCC uses dynamic programming to perform bundling
because it would be much harder to extract the instruction placement from the
automaton (which I think tracks all of the mentioned constraints internally).

Alexander


Coverage of backend rules

2010-05-11 Thread Paulo J. Matos
Hi,

I have a backend  and I would like to have a systematic way to know if
my testsuite covers all the define_insn and define_expand rules in my
md file.

What's the best way to achieve this?

I initially thought I could use gcov to check the coverage of the code
that is generated from the md file but I would like to know if there
is any better way to do this since I doubt I am the only one wishing
to do this.

Cheers,
-- 
PMatos


Re: C++0x Memory model and gcc

2010-05-11 Thread Andrew MacLeod

Miles Bader wrote:

Andrew MacLeod  writes:
  

-fmemory-model=single - Enable all data races introductions, as they
are today. (relax all 4 internal restrictions.)



One could still use this mode with a multi-threaded program as long as
explicit synchronization is done, right?
  


Right.   Its just a single processor memory model, so it doesn't limit 
any optimizations.


Andrew


Re: Build Error

2010-05-11 Thread Diego Novillo
[ Moved to gcc@gcc.gnu.org ]

On Tue, May 11, 2010 at 08:46, Sandeep Soni  wrote:
> On Tue, May 11, 2010 at 4:53 PM, Diego Novillo  wrote:
>> On Tue, May 11, 2010 at 02:24, Sandeep Soni  wrote:
>>
>>> I installed elfutils-libelf-devel-0.145-1 and that worked.
>>
>> Yes.  Older libelfs will not work.  However, you should've gotten a
>> configuration-time error.  If you can reproduce, could you file a bug?
>>  The checking done during configuration did not spot the old version
>> of libelf.
>>
>
> Here was the configuration output:
>
> [r...@sandy build]# ../trunk/configure
> checking build system type... i686-pc-linux-gnu
> checking host system type... i686-pc-linux-gnu
> checking target system type... i686-pc-linux-gnu
> checking for a BSD-compatible install... /usr/bin/install -c
> checking whether ln works... yes
> checking whether ln -s works... yes
> checking for a sed that does not truncate output... /bin/sed
> checking for gawk... gawk
> checking for gcc... gcc
> checking for C compiler default output file name... a.out
> checking whether the C compiler works... yes
> checking whether we are cross compiling... no
> checking for suffix of executables...
> checking for suffix of object files... o
> checking whether we are using the GNU C compiler... yes
> checking whether gcc accepts -g... yes
> checking for gcc option to accept ISO C89... none needed
> checking for g++... g++
> checking whether we are using the GNU C++ compiler... yes
> checking whether g++ accepts -g... yes
> checking for gnatbind... no
> checking for gnatmake... no
> checking whether compiler driver understands Ada... no
> checking how to compare bootstrapped objects... cmp
> --ignore-initial=16 $$f1 $$f2
> checking for objdir... .libs
> checking for the correct version of gmp.h... yes
> checking for the correct version of mpfr.h... yes
> checking for the correct version of mpc.h... yes
> checking for the correct version of the gmp/mpfr/mpc libraries... yes
> checking for version 0.10 (or later revision) of PPL... no
> checking how to run the C preprocessor... gcc -E
> checking for grep that handles long lines and -e... /bin/grep
> checking for egrep... /bin/grep -E
> checking for ANSI C header files... yes
> checking for sys/types.h... yes
> checking for sys/stat.h... yes
> checking for stdlib.h... yes
> checking for string.h... yes
> checking for memory.h... yes
> checking for strings.h... yes
> checking for inttypes.h... yes
> checking for stdint.h... yes
> checking for unistd.h... yes
> checking libelf.h usability... yes
> checking libelf.h presence... yes
> checking for libelf.h... yes
> checking gelf.h usability... yes
> checking gelf.h presence... yes
> checking for gelf.h... yes
> checking libelf/libelf.h usability... yes
> checking libelf/libelf.h presence... yes
> checking for libelf/libelf.h... yes
> checking libelf/gelf.h usability... yes
> checking libelf/gelf.h presence... yes
> checking for libelf/gelf.h... yes
> checking for the correct version of libelf... yes
> checking for elf_getshdrstrndx... no
> checking for elf_getshstrndx... yes
> The following languages will be built: c,c++,fortran,java,lto,objc
> *** This configuration is not supported in the following subdirectories:
>     target-libada gnattools
>    (Any other directories should still work fine.)
> checking for default BUILD_CONFIG... bootstrap-debug
> *** removing build-i686-pc-linux-gnu/libiberty/Makefile to force reconfigure
> *** removing build-i686-pc-linux-gnu/fixincludes/Makefile to force reconfigure
> *** removing prev-intl/Makefile to force reconfigure
> *** removing intl/Makefile to force reconfigure
> *** removing prev-libiberty/Makefile to force reconfigure
> *** removing libiberty/Makefile to force reconfigure
> *** removing prev-zlib/Makefile to force reconfigure
> *** removing zlib/Makefile to force reconfigure
> *** removing prev-libcpp/Makefile to force reconfigure
> *** removing libcpp/Makefile to force reconfigure
> *** removing prev-libdecnumber/Makefile to force reconfigure
> *** removing libdecnumber/Makefile to force reconfigure
> *** removing prev-gcc/Makefile to force reconfigure
> *** removing gcc/Makefile to force reconfigure
> checking for bison... bison -y
> checking for bison... bison
> checking for gm4... no
> checking for gnum4... no
> checking for m4... m4
> checking for flex... flex
> checking for flex... flex
> checking for makeinfo... makeinfo
> checking for expect... no
> checking for runtest... no
> checking for ar... ar
> checking for as... as
> checking for dlltool... no
> checking for ld... ld
> checking for lipo... no
> checking for nm... nm
> checking for ranlib... ranlib
> checking for strip... strip
> checking for windres... no
> checking for windmc... no
> checking for objcopy... objcopy
> checking for objdump... objdump
> checking for cc... cc
> checking for c++... c++
> checking for gcc... gcc
> checking for gcj... no
> checking for gfortran... gfortran
> checking for ar... no
> checking for ar... ar
> chec

Re: optimizing a DSO

2010-05-11 Thread Ian Lance Taylor
Marc Glisse  writes:

> On Tue, 11 May 2010, Jakub Jelinek wrote:
>
>> And you can use -Wl,-O1 (pass -O1 to the linker) to let the linker
>> determine optimal size of the hash table (minimum number of collisions
>> for reasonably sized section).
>
> Was it considered enabling this automatically with -O3 (or -Ofast)
> when we know the linker is gnu?

Sounds like a good idea.  Would you mind sending a patch or filing a
bug report?

Ian


Re: C/C++ AST

2010-05-11 Thread Basile Starynkevitch

On 05/11/2010 11:34 AM, wolfgang8...@gmx.de wrote:

Hello All,

I want to know if it is possible to modify AST of the C/C++-Language.


You can modify a middle end representation of source program. I am not 
sure if it always should be called an AST.



What I would like to do is to add some arguments to some function calls or add 
statements somewhere in the tree.



My suggestion would be to code a GCC pass as a plugin, working on some 
GIMPLE representation (I don't know if you need or want it to be in SSA 
form or not). The GIMPLE representation is the language & target 
"neutral" intermediate representations used inside the middle end of GCC 
(and common to every front-end = C, C++, Ada, Fortran & to every target 
system = x86, ARM, ...).


The MELT plugin & infrastructure is precisely targeted towards this kind 
of extensions.


MELT is a lispy domain specific language designed to easily code 
transformations on GIMPLE (& other middle-end) representations. It is 
also a plugin (& a GCC branch) implementation. So it seems to be suited 
to your needs (which I don't understand well in details).


The main features of MELT are
 * a powerful pattern matching facility
 * a lispy language (translated to C suitable for GCC internals) with 
higher-order (anonymous) functions, objects, garbage collection, & 
ability to mix small C code chunks inside the MELT code.


For more about MELT, look at 
http://gcc.gnu.org/wiki/MiddleEndLispTranslator or even better ask me 
(on the gcc@ mailing list).


Alternatively, you could code your specific pass in plain C in an 
ordinary plugin.


If you use MELT or if you code a plugin in C, you need to learn more 
about GCC internal representations (notably GIMPLE & Tree/Generic) and 
passes.


Regards.



--
Basile STARYNKEVITCH http://starynkevitch.net/Basile/
email: basilestarynkevitchnet mobile: +33 6 8501 2359
8, rue de la Faiencerie, 92340 Bourg La Reine, France
*** opinions {are only mines, sont seulement les miennes} ***


Re: rep prefix doesn't work with Solaris 2.9 Sun assembler

2010-05-11 Thread Ian Lance Taylor
Jay K  writes:

> Understood, but I'll have to stick to "small" changes as I can't get the 
> papers.

Note that for copyright purposes a series of unrelated small changes
counts as a big change.  If you truly can't do the paperwork, then
it's probably best for the project if you avoid sending actual
patches.  Sorry about that.

Ian


Re: Build Error

2010-05-11 Thread Sandeep Soni
On Tue, May 11, 2010 at 6:30 PM, Diego Novillo  wrote:
> [ Moved to gcc@gcc.gnu.org ]
> Hmm, it did not detect elf_getshdrstrndx and yet it tried to use it
> later on. I think that's the bug.  Yes, please file a bug.  I believe
> it's going to be easy to fix, though.  There should be an unguarded
> use of that function somewhere, it needs to be changed.

Filed a bug.

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

Thanks.


-- 
Cheers
Sandy


Re: optimizing a DSO

2010-05-11 Thread Marc Glisse

On Tue, 11 May 2010, Ian Lance Taylor wrote:


Marc Glisse  writes:


On Tue, 11 May 2010, Jakub Jelinek wrote:


And you can use -Wl,-O1 (pass -O1 to the linker) to let the linker
determine optimal size of the hash table (minimum number of collisions
for reasonably sized section).


Was it considered enabling this automatically with -O3 (or -Ofast)
when we know the linker is gnu?


Sounds like a good idea.  Would you mind sending a patch or filing a
bug report?


Bug#:44080

Sorry, my assignment is still not through so I won't even try to write a 
patch.


--
Marc Glisse


Re: Coverage of backend rules

2010-05-11 Thread Ian Lance Taylor
"Paulo J. Matos"  writes:


> I have a backend  and I would like to have a systematic way to know if
> my testsuite covers all the define_insn and define_expand rules in my
> md file.
>
> What's the best way to achieve this?

For define_insn you can use the -da option, and scan the debug files
for the matched insn names.  For define_expand you can reliably use
profiling information to look for calls to gen_NAME.

This approach won't tell you whether you are testing all alternatives
of all define_insns.  I don't know of a reasonable way to do that.

Ian


Re: rep prefix doesn't work with Solaris 2.9 Sun assembler

2010-05-11 Thread Richard Kenner
> Note that for copyright purposes a series of unrelated small changes
> counts as a big change.  If you truly can't do the paperwork, then
> it's probably best for the project if you avoid sending actual
> patches.  Sorry about that.

A series of *related* small changes certainly would count as a big change,
but I'm not so sure about UNrelated changes.  However, I do agree with your
sentiment that somebody who can't get the assignment paperwork done is
probably better off not submitting patches on an ongoing basis.


A branch for 256bit vectorizer

2010-05-11 Thread H.J. Lu
Hi,

I created a branch for 256bit vectorizer, branches/vect256/.  Richard
and I will work on it to extend vectorizer to 256bit.

Jason, can you include it in git mirror? We can drop the ix86 branch
in git since there are several branches under branches/ix86.

Thanks.

-- 
H.J.


Re: A branch for 256bit vectorizer

2010-05-11 Thread Jason Merrill

On 05/11/2010 10:30 AM, H.J. Lu wrote:

I created a branch for 256bit vectorizer, branches/vect256/.  Richard
and I will work on it to extend vectorizer to 256bit.

Jason, can you include it in git mirror? We can drop the ix86 branch
in git since there are several branches under branches/ix86.


It's already mirrored, just not one that is included in the default 
clone.  Assuming you have a clone like that described in 
http://gcc.gnu.org/wiki/GitMirror, you would say


git config --add remote.origin.fetch 
refs/remotes/vect256:refs/remotes/origin/vect256
git config --add svn-remote.svn.fetch 
branches/vect256:refs/remotes/origin/vect256


and you should be all set.

I did drop the ix86 branch, as the git-svn subdirectory confusion 
significantly increases the overhead from including it in the clone set.


Jason


Re: A branch for 256bit vectorizer

2010-05-11 Thread H.J. Lu
On Tue, May 11, 2010 at 7:49 AM, Jason Merrill  wrote:
> On 05/11/2010 10:30 AM, H.J. Lu wrote:
>>
>> I created a branch for 256bit vectorizer, branches/vect256/.  Richard
>> and I will work on it to extend vectorizer to 256bit.
>>
>> Jason, can you include it in git mirror? We can drop the ix86 branch
>> in git since there are several branches under branches/ix86.
>
> It's already mirrored, just not one that is included in the default clone.
>  Assuming you have a clone like that described in
> http://gcc.gnu.org/wiki/GitMirror, you would say
>
> git config --add remote.origin.fetch
> refs/remotes/vect256:refs/remotes/origin/vect256
> git config --add svn-remote.svn.fetch
> branches/vect256:refs/remotes/origin/vect256
>
> and you should be all set.

I was hoping

git://gcc.gnu.org/git/gcc.git

mirror branches/vect256 instead of ix86 so that
I can just pull from it.

>
> I did drop the ix86 branch, as the git-svn subdirectory confusion
> significantly increases the overhead from including it in the clone set.

From:

http://gcc.gnu.org/wiki/GitMirror

remotes/origin/ix86 is still listed. I did a clone of

git://gcc.gnu.org/git/gcc.git

and I got x86 branch.

Thanks.


-- 
H.J.


Re: A branch for 256bit vectorizer

2010-05-11 Thread Jason Merrill

On 05/11/2010 11:21 AM, H.J. Lu wrote:

On Tue, May 11, 2010 at 7:49 AM, Jason Merrill  wrote:



git config --add remote.origin.fetch 
refs/remotes/vect256:refs/remotes/origin/vect256
git config --add svn-remote.svn.fetch 
branches/vect256:refs/remotes/origin/vect256


I was hoping

git://gcc.gnu.org/git/gcc.git

mirror branches/vect256 instead of ix86 so that
I can just pull from it.


It does.  You just need to tell your local git to pull it, using the 
above commands.  If you do


git ls-remote git://gcc.gnu.org/git/gcc.git

you will see refs/remotes/vect256 in the list.


From:

http://gcc.gnu.org/wiki/GitMirror

remotes/origin/ix86 is still listed.


Thanks, I'll fix that.


I did a clone of

git://gcc.gnu.org/git/gcc.git

and I got x86 branch.


A new clone shouldn't get it, as it isn't in refs/heads anymore.  But it 
won't disappear from your local repository until you do 'git remote 
prune origin'.


Jason


Re: A branch for 256bit vectorizer

2010-05-11 Thread Andreas Schwab
"H.J. Lu"  writes:

> From:
>
> http://gcc.gnu.org/wiki/GitMirror
>
> remotes/origin/ix86 is still listed. I did a clone of
>
> git://gcc.gnu.org/git/gcc.git
>
> and I got x86 branch.

Try running "git remote prune origin".

Andreas.

-- 
Andreas Schwab, sch...@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."


Re: A branch for 256bit vectorizer

2010-05-11 Thread H.J. Lu
On Tue, May 11, 2010 at 9:40 AM, Jason Merrill  wrote:
> On 05/11/2010 11:21 AM, H.J. Lu wrote:
>>
>> On Tue, May 11, 2010 at 7:49 AM, Jason Merrill  wrote:
>
>>> git config --add remote.origin.fetch
>>> refs/remotes/vect256:refs/remotes/origin/vect256
>>> git config --add svn-remote.svn.fetch
>>> branches/vect256:refs/remotes/origin/vect256
>>
>> I was hoping
>>
>> git://gcc.gnu.org/git/gcc.git
>>
>> mirror branches/vect256 instead of ix86 so that
>> I can just pull from it.
>
> It does.  You just need to tell your local git to pull it, using the above
> commands.  If you do
>
> git ls-remote git://gcc.gnu.org/git/gcc.git
>
> you will see refs/remotes/vect256 in the list.

It isn't very clear that refs/heads was changed to refs/remotes.

http://repo.or.cz/w/official-gcc.git

still fetches refs/heads, not refs/remotes. I can't browse branches
under refs/remotes.


H.J.

>> From:
>>
>> http://gcc.gnu.org/wiki/GitMirror
>>
>> remotes/origin/ix86 is still listed.
>
> Thanks, I'll fix that.
>
>> I did a clone of
>>
>> git://gcc.gnu.org/git/gcc.git
>>
>> and I got x86 branch.
>
> A new clone shouldn't get it, as it isn't in refs/heads anymore.  But it
> won't disappear from your local repository until you do 'git remote prune
> origin'.
>
> Jason


Re: A branch for 256bit vectorizer

2010-05-11 Thread Jason Merrill

On 05/11/2010 02:28 PM, H.J. Lu wrote:

It isn't very clear that refs/heads was changed to refs/remotes.


Sure.  The git-svn mirror puts everything under refs/remotes, then the 
git mirror maintainers manually create the equivalent of symbolic links 
under refs/heads for some branches.


I don't know what policy Bernie was using to decide which branches 
should be included; I guess from an earlier mail that he was just 
including all active branches, so I should probably just go ahead and 
add this one too even though I would be inclined toward a different policy.


OK, done.


http://repo.or.cz/w/official-gcc.git

still fetches refs/heads, not refs/remotes. I can't browse branches
under refs/remotes.


True.

Jason


[sysad...@gnu.org: [gnu.org #572859] [gcc-bugs-h...@gcc.gnu.org: ezmlm warning]]

2010-05-11 Thread Alfred M. Szmidt
Not sure where to send this, who is responsible for the mail server
for gcc.gnu.org?

--- Start of forwarded message ---
Subject: [gnu.org #572859] [gcc-bugs-h...@gcc.gnu.org: ezmlm warning] 
From: "Ward Vandewege via RT" 
To: a...@gnu.org
Date: Mon, 10 May 2010 10:28:41 -0400

> [...@gnu.org - Sun May 09 07:42:17 2010]:
> 
> Not sure if it is useful to report these warnings from gcc.gnu.org,
> but here is another warning I got.
> 
> Hi. This is the qmail-send program at sourceware.org.
> I'm afraid I wasn't able to deliver your message to the following
addresses.
> This is a permanent error; I've given up. Sorry it didn't work out.
> 
> :
> 140.186.70.92 failed after I sent the message.
> Remote host said: 550-8-bit characters not allowed in subject
> 550 (see RFC 2822, sections 3.6.5, 2.2.1)
> --- End of forwarded message ---

This was a message with illegal encoding. This is our rule:

  denysenders   = \N[\x80-\xFF]\N
  message   = 8-bit characters not allowed in envelope sender\n\
  (see RFC 2821, section 4.1.2)


The gcc.gnu.org mailserver should really not be accepting that mail either.

Thanks,
Ward.

- -- 
Ward Vandewege 
Free Software Foundation - Senior System Administrator
--- End of forwarded message ---


Re: [sysad...@gnu.org: [gnu.org #572859] [gcc-bugs-h...@gcc.gnu.org: ezmlm warning]]

2010-05-11 Thread Joe Buck
On Tue, May 11, 2010 at 01:12:45PM -0700, Alfred M. Szmidt wrote:
> Not sure where to send this, who is responsible for the mail server
> for gcc.gnu.org?

The admins can be reached at overse...@gcc.gnu.org .



Re: Building GCC & CFLAGS settings

2010-05-11 Thread Steve Ellcey
On Wed, 2010-05-05 at 10:42 -0700, H.J. Lu wrote:
> On Wed, May 5, 2010 at 10:18 AM, Steve Ellcey  wrote:
> >
> > I was wondering if anyone has built GCC using a CFLAGS (and CXXFLAGS) 
> > setting
> > that causes GCC to generate code that is not compatibile with the default
> > GCC output.  Basically, I am building GCC on ia64-hp-hpux11.31 where I set
> > CFLAGS and CXXFLAGS to "-mlp64" to generate 64 bit code instead of the
> > default 32 bit code.  During the build libiberty is built in 64 bit mode but
> > then the object files that go into genmodes (genmodes.o, errors.o, etc) are
> > compiled without using CFLAGS and the link of genmodes fails because
> > genmodes.o and errors.o are in 32 bit mode and libiberty is in 64 bit mode.
> >
> 
> I am using
> 
> # CC="gcc -m32" CXX="g++ -m32" ./configure 
> 
> to bootstrap 32bit gcc on 64bit Linux.

I am curious, if you do this does the resulting compiler generate 32 bit
code by default?  And I assume that  if you don't specify CC and CXX
with the -m32 flags then the compiler generates 64 bit code by default,
right?

Steve Ellcey
s...@cup.hp.com



arm-elf float-abi defaults...

2010-05-11 Thread DJ Delorie

I discovered that if you build a plain arm-elf toolchain, the default
float-abis for gcc and gas don't match.  I added this patch locally to
make it "just work" but it seems to me it would be better to have the
defaults match, although I'm not sure how to enforce that.  Comments?
Suggestions?

Index: gcc/config/arm/elf.h
===
RCS file: gcc/config/arm/elf.h,v
--- gcc/config/arm/elf.h
+++ gcc/config/arm/elf.h
@@ -41,7 +41,13 @@
 #endif
 
 #ifndef SUBTARGET_EXTRA_ASM_SPEC
-#define SUBTARGET_EXTRA_ASM_SPEC ""
+#if TARGET_DEFAULT_FLOAT_ABI == ARM_FLOAT_ABI_SOFT
+#define SUBTARGET_EXTRA_ASM_SPEC \
+  "%{!msoft-float:%{!mhard-float:%{!mfloat-abi=*:-mfloat-abi=soft}}}"
+#else
+#define SUBTARGET_EXTRA_ASM_SPEC \
+  "%{!msoft-float:%{!mhard-float:%{!mfloat-abi=*:-mfloat-abi=hard}}}"
+#endif
 #endif
 
 #ifndef SUBTARGET_ASM_FLOAT_SPEC


gcc-4.4-20100511 is now available

2010-05-11 Thread gccadmin
Snapshot gcc-4.4-20100511 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.4-20100511/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

This snapshot has been generated from the GCC 4.4 SVN branch
with the following options: svn://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch 
revision 159296

You'll find:

gcc-4.4-20100511.tar.bz2  Complete GCC (includes all of below)

gcc-core-4.4-20100511.tar.bz2 C front end and core compiler

gcc-ada-4.4-20100511.tar.bz2  Ada front end and runtime

gcc-fortran-4.4-20100511.tar.bz2  Fortran front end and runtime

gcc-g++-4.4-20100511.tar.bz2  C++ front end and runtime

gcc-java-4.4-20100511.tar.bz2 Java front end and runtime

gcc-objc-4.4-20100511.tar.bz2 Objective-C front end and runtime

gcc-testsuite-4.4-20100511.tar.bz2The GCC testsuite

Diffs from 4.4-20100504 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.4
link is updated and a message is sent to the gcc list.  Please do not use
a snapshot before it has been announced that way.


Re: C++0x Memory model and gcc

2010-05-11 Thread Miles Bader
Andrew MacLeod  writes:
>>> -fmemory-model=single - Enable all data races introductions, as they
>>> are today. (relax all 4 internal restrictions.)
>>
>> One could still use this mode with a multi-threaded program as long as
>> explicit synchronization is done, right?
>
> Right.  Its just a single processor memory model, so it doesn't limit
> any optimizations.

Hmm, though now that I think about it, I'm not exactly sure what I mean
by "explicit synchronization".  Standard libraries (boost threads, the
upcoming std::thread) provide things like mutexes and
conditional-variables, but does using those guarantee that the right
things happen with any shared data-structures they're used to
coordinate...?

Thanks,

-Miles

-- 
Vote, v. The instrument and symbol of a freeman's power to make a fool of
himself and a wreck of his country.