Binary packages for Solaris

2014-07-09 Thread Dagobert Michelsen
Hi,

I just noticed that on the page with the list for binary packages for
Solaris at
  https://gcc.gnu.org/install/binaries.html
the distributions „Blastwave“ and „SunFreeware“ are still listed. Blastwave has
closed its doors some month ago and SunFreeware has gone commercial (now 
available
as unixpackages.com). You may want to remove these two from the list.


Best regards

  — Dago

-- 
"You don't become great by trying to be great, you become great by wanting to 
do something,
and then doing it so hard that you become great in the process." - xkcd #896



smime.p7s
Description: S/MIME cryptographic signature


Re: build/genmodes: config/i386/i386-modes.def:25: (TF) field format must not be set

2014-07-09 Thread Andreas Schwab
Gerald Pfeifer  writes:

> build/genmodes -h > tmp-modes.h
> build/genmodes: config/i386/i386-modes.def:25: (TF) field format must not be 
> set
> build/genmodes: config/i386/i386-modes.def:24: (XF) field format must not be 
> set
> build/genmodes: machmode.def:203: (DF) field format must not be set
> build/genmodes: machmode.def:202: (SF) field format must not be set
> build/genmodes: machmode.def:244: (TD) field format must not be set
> build/genmodes: machmode.def:243: (DD) field format must not be set
> build/genmodes: machmode.def:242: (SD) field format must not be set
> gmake[3]: *** [s-modes-h] Error 1
> gmake[3]: Leaving directory `/scratch2/tmp/gerald/OBJ-0708-1821/gcc'
> gmake[2]: *** [all-stage3-gcc] Error 2
> gmake[2]: Leaving directory `/scratch2/tmp/gerald/OBJ-0708-1821'
> gmake[1]: *** [stage3-bubble] Error 2
> gmake[1]: Leaving directory `/scratch2/tmp/gerald/OBJ-0708-1821'
> gmake: *** [bootstrap-lean] Error 2

This is probably broken everywhere, happens even on ia64.

Andreas.

-- 
Andreas Schwab, SUSE Labs, sch...@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


ivdep pragma not used in ddg.c?

2014-07-09 Thread Bingfeng Mei
Hi,
I noticed recent GCC adds ivdep pragma support. We have our own implementation 
for ivdep for a couple of years now. As GCC implementation is much cleaner and 
we want to migrate to it. Ivdep is consumed in two places in our 
implementation, one is tree-vect-data-refs.c used by vectorizer, the other is 
in ddg.c, used by modulo scheduler. In GCC implementation, the former is the 
same, but ddg.c doesn't consume ivdep information at all. I think it is 
important not to draw redundant cross-iteration dependence if ivdep is 
specified in order to improve modulo scheduling performance. 

Looking at the code, I wonder whether loop->safelen still keep the correct 
information or whether loop structure still remain correct after so many 
tree/rtl passes. For example, in sms-schedule of modulo-sched.c

  loop_optimizer_init (LOOPS_HAVE_PREHEADERS
   | LOOPS_HAVE_RECORDED_EXITS);

Does this mean loop structure is reinitialized? I know there is a flag 
(PROP_loops) which is supposed to preserve loop structure. But not sure what 
happens after all loop transformation (unrolling, peeling, etc). Is there a 
stage loop structure is rebuilt and we lost safelen (ivdep) information, or it 
is still safe to use in modulo scheduling pass?

Thanks,
Bingfeng


Re: Using BUILT_IN_ATOMIC_...

2014-07-09 Thread Andrew MacLeod

On 07/09/2014 02:17 AM, Tobias Burnus wrote:

Hello all,

I am trying to use BUILT_IN_ATOMIC_..., but it does not quite work. I 
am calling them as:


  tmp = builtin_decl_explicit (BUILT_IN_ATOMIC_LOAD_4);
  tmp = build_call_expr_loc (input_location, tmp, 2, atom.expr, ...

That gives the following dump:

  __atomic_store_n (&i, 5, 0);
  __atomic_store_n (&i, (integer(kind=4)) *k, 0);
  j = (integer(kind=4)) __atomic_load_4 (&i, 0);
  __atomic_add_fetch (&i, 5, 0);


The "__atomic_load_4" works, but the "__atomic_store_n" and 
"__atomic_add_fetch" lead to link-time errors:


  fo4o.f90:(.text+0x44): undefined reference to `__atomic_store_n'
  fo4o.f90:(.text+0x73): undefined reference to `__atomic_add_fetch'


The issue with `__atomic_store_n', I can solve by replacing it by, 
e.g., BUILT_IN_ATOMIC_STORE_4. However, how does one properly use 
__atomic_add_fetch alias BUILT_IN_ATOMIC_ADD_FETCH_N, given that there 
is no _4 version of it?


A lot of  the specialized processing is handled by the parser.  I tried 
to move this to the middle end once upon a time, and the various 
frustrations leaded me to the frontend/middle end separation project.


so, all the _N variations do not exist as actual functions that can be 
called.  They are shorthand for the parser to determine the size of the 
object at compile time and call the appropriate  _1, _2, _4, _8 or _16 
routine.  From the middle end, you ought to be able to call the correct 
one directly since you should know the size of the object.


Since the front end "handles" the resolving of type size for _N 
variations of the functions, the middle end uses those symbols to 
represent the generic versions of the function.  The generic versions 
are the ones which simply take a buffer and a size, and operate on an 
arbitrary number  bytes  (ie a 32 byte structure for instance).  These 
are usually implemented in libatomic via locks.


There are _{1,2,4,8,16} variations of  BUILT_IN_ATOMIC_ADD_FETCH... 
There is no *generic* version tho which is what you get when you try 
calling the function without any _N variation. Performing an integral 
operation on non-integral sizes makes no sense and is not supported in 
the middle end.


So you need to explicitly set your BUILT_IN size decl.   The parser 
(From c-family/c-common.c::resolve_overloaded_builtin) figures that out 
via something like:
  fncode = (enum built_in_function)((int)BUILT_IN_ATOMIC_ADD_FETCH_N + 
exact_log2 (n) + 1);

  new_function = builtin_decl_explicit (fncode);
Probably ought to be a small function to do this :-P




Additionally, if one wants to fetch the old value (e.g. with 
__atomic_add_fetch), how does one properly use the function result? 
The problem is that TREE_TYPE() doesn't automatically match the type 
of the first argument. Ignoring the type issue in the front end and 
simply calling MODIFY_EXPR will lead to a gimplify.c ICE.


The types of the builtin functions are explicitly unsigned integral 
types, you probably need to convert the result to the type you want.  
the arguments are also expected to be unsigned (The front end converts 
them), except for the first one which needs to be a pointer to the 
unsigned type. I expect you can get away without the parameter types 
being exact as long as they are all the right size... sinc all the 
checking is in the front end :-)


Hope that helps.

Andrew


Re: Comparison of GCC-4.9 and LLVM-3.4 performance on SPECInt2000 for x86-64 and ARM

2014-07-09 Thread Ilya Palachev







Re: Comparison of GCC-4.9 and LLVM-3.4 performance on SPECInt2000 for x86-64 and ARM

2014-07-09 Thread Ilya Palachev

Dear all,

Do you have any results of GCC and LLVM performance comparisons of 
different versions (for *ARM* architecture)?
It's not obvious question to find such comparisons in Web, since 
Phoronix usually publishes comparisons for x86 and x86_64, and last 
comparison for ARM was performed in 2012:


LLVM/Clang vs. GCC On The ARM Cortex-A15 Preview (1 December 2012):
http://www.phoronix.com/scan.php?page=article&item=llvm_gcc_a15&num=1

GCC vs. LLVM/Clang Compilers On ARMv7 Linux (09 May 2012 ):
http://www.phoronix.com/scan.php?page=news_item&px=MTA5OTM

Did anybody ever try to measure the dynamics of performance changes of 
GCC and LLVM (i. e. 2 comparative graphs from version to version) - for 
arm architecture?


Best regards,

Ilya Palachev


Re: ivdep pragma not used in ddg.c?

2014-07-09 Thread Richard Biener
On July 9, 2014 12:49:15 PM CEST, Bingfeng Mei  wrote:
>Hi,
>I noticed recent GCC adds ivdep pragma support. We have our own
>implementation for ivdep for a couple of years now. As GCC
>implementation is much cleaner and we want to migrate to it. Ivdep is
>consumed in two places in our implementation, one is
>tree-vect-data-refs.c used by vectorizer, the other is in ddg.c, used
>by modulo scheduler. In GCC implementation, the former is the same, but
>ddg.c doesn't consume ivdep information at all. I think it is important
>not to draw redundant cross-iteration dependence if ivdep is specified
>in order to improve modulo scheduling performance. 
>
>Looking at the code, I wonder whether loop->safelen still keep the
>correct information or whether loop structure still remain correct
>after so many tree/rtl passes. For example, in sms-schedule of
>modulo-sched.c
>
>  loop_optimizer_init (LOOPS_HAVE_PREHEADERS
>  | LOOPS_HAVE_RECORDED_EXITS);
>
>Does this mean loop structure is reinitialized? I know there is a flag
>(PROP_loops) which is supposed to preserve loop structure. But not sure
>what happens after all loop transformation (unrolling, peeling, etc).
>Is there a stage loop structure is rebuilt and we lost safelen (ivdep)
>information, or it is still safe to use in modulo scheduling pass?

Currently loop information is discarded after RTL loop optimizers because there 
is no later consumer. You'd have to extend lifetime if you add later users.

Richard.

>Thanks,
>Bingfeng




Re: Binary packages for Solaris

2014-07-09 Thread Tom Christensen

On 09/07/14 08:59, Dagobert Michelsen wrote:

Hi,

I just noticed that on the page with the list for binary packages for
Solaris at
   https://gcc.gnu.org/install/binaries.html
the distributions „Blastwave“ and „SunFreeware“ are still listed. Blastwave has
closed its doors some month ago and SunFreeware has gone commercial (now 
available
as unixpackages.com). You may want to remove these two from the list.



I've posted a patch to do that here:
https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00652.html

-tgc


gcc-4.9-20140709 is now available

2014-07-09 Thread gccadmin
Snapshot gcc-4.9-20140709 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.9-20140709/
and on various mirrors, see http://gcc.gnu.org/mirrors.html for details.

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

You'll find:

 gcc-4.9-20140709.tar.bz2 Complete GCC

  MD5=be17cd2d656a473f8684dacf5ee84682
  SHA1=421aeb030de78545a75576cdb8f64acfb708ce3a

Diffs from 4.9-20140702 are available in the diffs/ subdirectory.

When a particular snapshot is ready for public consumption the LATEST-4.9
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.


obsolete targets

2014-07-09 Thread Trevor Saunders
Hi,

I've noticed that the following targets are built in config-list.mk with
--enable-obsolete
i686-interix3 - doesn't appear to actually require --enable-obsolete
though, should it be marked as obsolete in config.gcc?
score-* and picochip-* since atleast sept 2012, is there a reason they
haven't been removed yet?

Also I've noticed that all the vms targets in config-list.mk fail
because they try to link vms-c.o into cc1plus, but a symbol needed by
vms-c.o is only defined in cc1 (it has been this way since at least mid
may).  Does anyone care about vms, or should we recognize what seems to
be the state of afairs and mark it as obsolete?

thanks!

Trev


LTO ICE in D Frontend

2014-07-09 Thread Iain Buclaw
Hi,

I'm trying to get to the bottom of a bug when using the D front-end with -flto.

When compiling anything, it always ICEs at in
streamer_get_pickled_tree, at tree-streamer-in.c.

The of it appears to be that the LTO frontend seems to never retrieve
what it is expected to find.  But I don't know what could be missing
from the code generation on my side to sort that out.


The following minimal test that yields an ICE.
---
extern(C) int test = void;


I had set a breakpoint at hash_tree and looked at debug_tree output
from an equivalent program in C++, but nothing stands out as wrong
here to me.

Any insight would be helpful.


// D
DECL_NAME:
 

DECL_CONTEXT: (null_tree)

DECL_SIZE:
  constant 32>

DECL_SIZE_UNIT:
  constant 4>


VAR_DECL:
 
unit size 
align 32 symtab 0 alias set 0 canonical type 0x765505e8
precision 32 min  max

pointer_to_this >
used public static tls-initial-exec SI file test.d line 1 col 0
size  unit size 
align 32
(mem/c:SI (symbol_ref:DI ("test") [flags 0x2a] ) [0 test+0 S4 A32])>




// C++
DECL_NAME:
 
local bindings <(nil)>>

DECL_CONTEXT:
 

DECL_SIZE:
  constant 32>

DECL_SIZE_UNIT:
  constant 4>

 VAR_DECL:
  
unit size 
align 32 symtab 0 alias set 0 canonical type 0x7655a5e8
precision 32 min  max

pointer_to_this >
public static SI file test2.cc line 2 col 5 size  unit size 
align 32 context 

(mem/c:SI (symbol_ref:DI ("test") [flags 0x2] ) [0 test+0 S4 A32]) chain >


Re: LTO ICE in D Frontend

2014-07-09 Thread Iain Buclaw
On 10 July 2014 07:31, Iain Buclaw  wrote:
> Hi,
>
> I'm trying to get to the bottom of a bug when using the D front-end with 
> -flto.
>
> When compiling anything, it always ICEs at in
> streamer_get_pickled_tree, at tree-streamer-in.c.
>
> The of it appears to be that the LTO frontend seems to never retrieve
> what it is expected to find.  But I don't know what could be missing
> from the code generation on my side to sort that out.
>
>
> The following minimal test that yields an ICE.
> ---
> extern(C) int test = void;
>


In this example, the LTO expects to find an IDENTIFIER_NODE, but
retrieves an ERROR_MARK.

Regards
Iain.