stanleyomachieful | 6 May 13:54 2015


Good day sir, how do I get tutorial of GNU make?thanks for you answer.
Sent from my BlackBerry wireless device from MTN

Peter T. Breuer | 6 May 02:19 2015

[OR1K port] where do I change the function frame structure


Please ..  where (in what file, dir) of the gcc (4.9.1) source should I
rummage in order to change the sequence of instructions eventually
emitted to do a function call?

I mean to target the sequence of saves of to-be-clobbered registers,
change of stack/frame pointer ...  and the reverse of that sequence that
one finds around a function call in the compiled code. I'm looking at
the OR1K port, which I would like to port further to a related

I understand that I probably should be changing the RTL constructed
somewhere near the front end, and that I will also have to do a bit of
looking after what assembler is emitted at the back end.  But for now,
please point me at the right area of the code and I'll be able to get

Instead of decrementing the stack pointer on call, then incrementing it
again on return, I want to save the stack pointer, then decrement it,
and copy back from the saved copy instead of incrementing it again on
return.  This is similar to what happens to a frame pointer, when there
is a frame pointer ...

I hope somebody can direct me to the right area of the source code.

Regards to all


(Continue reading)

gccadmin | 6 May 00:36 2015

gcc-5-20150505 is now available

Snapshot gcc-5-20150505 is now available on
and on various mirrors, see for details.

This snapshot has been generated from the GCC 5 SVN branch
with the following options: svn:// revision 222830

You'll find:

 gcc-5-20150505.tar.bz2               Complete GCC


Diffs from 5-20150428 are available in the diffs/ subdirectory.

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

Aldy Hernandez | 6 May 00:33 2015

Merging debug-early work?


I believe I have done as much as is reasonable for a merge, but I'd like 
to get your opinion before I post a huge patch to the list.

The branch bootstraps with one regression in GCC 
(gcc.dg/debug/dwarf2/stacked-qualified-types-3.c) and none for GDB.

The GCC regression is a missed optimization while merging the common 
denominator of a set of qualifiers for a type within a DIE.  For 
example, if two types share "const volatile" (say "const volatile int" 
and "const volatile char"), dwarf2out outputs things in the most 
efficient manner as to share the maximum common type DIEs.  This is not 
working in the branch as TYPE_MAIN_VARIANTs are not complete by the time 
early dwarf is run.  If it is possible, I'd like to work on this one 
regression post-merge.  Not a big deal if you disagree, but I'd prefer 
to postpone on this non crucial bit.

A few caveats...

Richi wants to play around with free-lang-data in the non LTO path.  I 
haven't not done so, and it's left as an exercise to the reader :).

Shortly after the merge I'll work on a pass to prune unused decl DIEs as 
we're presently creating more DIEs than mainline.  This was expected, 
and if I understood Jason correctly, it is ok to work on this 
post-merge.  However, even without such a pass, the .debug_info size 
difference is reasonable:

gcc/* (except testsuite):
(Continue reading)

Andreas Hollmann | 5 May 22:06 2015

GOMP: ICV: run-sched-var - Why is dynamic default and not static?


in gcc/libgomp/env.c

the ICV run-sched-var is defined as

run_sched_var = GFS_DYNAMIC

It would be more natural to define it as GFS_STATIC, since
the default schedule is also static in gomp. Is there any reason
for this decision?

Both ICVs run-sched-var and def-sched-var are implementation defined,
but differ in gomp?

Here are the quotes from the OpenMP spec 3.1:

 run-sched-var - controls the schedule that the runtime schedule
clause uses for loop regions. There is one copy of this ICV per
data environment.
( OMP_SCHEDULE, omp_get_schedule(), Implementation defined )

def-sched-var - controls the implementation defined default scheduling
of loop regions. There is one copy of this ICV for the whole program.
(  Implementation defined )


(Continue reading)

Kyrill Tkachov | 5 May 15:38 2015

Target attribute hooks questions

Hi all,

I'm looking at implementing target attributes for aarch64 and I have some questions about the hooks involved.
I haven't looked at this part of the compiler before, so forgive me if some of them seem obvious. I couldn't
figure it out from the documentation (

* Seems to me that TARGET_OPTION_VALID_ATTRIBUTE_P is the most important one that parses
the string inside the __attribute__ ((target ("..."))) and sets the target-specific
flags appropriately. Is that correct?

* What is TARGET_ATTRIBUTE_TABLE used for? It's supposed to map attributes to handlers?

* What is the use of TARGET_OPTION_SAVE and TARGET_OPTION_RESTORE? Is that used during
  something like LTO when different object files and functions are compiled with different
flags? Are these functions just supposed to 'backup' various tuning and ISA decisions?

* Is TARGET_COMP_TYPE_ATTRIBUTES the one that's supposed to handle incompatible attributes
being specified? (for example incompatible endianness or architecture levels)?

Thanks for any insight,

Renlin Li | 5 May 15:27 2015

Is it Okay for GCC to do the following simplifications with "-ffast-math" flag

Hi all,

For the following illustrative code,

double f1(int x) { return (double)(float)x; } --> return (double)x;
int f2(double x) { return (int)(float)x; } --> return (int)x;

Is it Okay for the compiler to do the simplifications shown above with 
fast-match enabled?

Renlin Li

Aditya K | 5 May 06:42 2015

Compiler warnings while compiling gcc with clang‏

I was able to successfully bootstrap gcc by using clang as the stage 1 compiler. I configured gcc using the
following arguments.

../configure --disable-multilib --enable-bootstrap --enable-languages=c,c++
CC=/work/llvm/install-release/bin/clang CXX=/work/llvm/install-release/bin/clang++

And the bootstrap was successful. One useful thing I got to see was clang warnings. Clang produced several
warnings (> 1000 unique ones). I have attached two files with this email.
1. sorted list of warnings (summary only)
2. complete build log.

I want to know that is there any interest in resolving these warnings? I went through the list a little bit and
some warnings
appear to be quite useful. e.g.

1. warning: struct 'varpool_node' was previously declared as a class [-Wmismatched-tags]

2. ../../gcc/cgraph.h../../gcc/wide-int.h::18881125::101::  warningwarning: : class
'cgraph_node' was previously declared as a struct [-Wmismatch    
ed-tags]'fixed_wide_int_storage' defined as a class template here but previously declared as a struct
template [-Wmismatched-tags]

Attachment ( application/x-bzip, 366 KiB
Attachment ( application/x-bzip, 12 KiB
gccadmin | 4 May 00:36 2015

gcc-6-20150503 is now available

Snapshot gcc-6-20150503 is now available on
and on various mirrors, see for details.

This snapshot has been generated from the GCC 6 SVN branch
with the following options: svn:// revision 222752

You'll find:

 gcc-6-20150503.tar.bz2               Complete GCC


Diffs from 6-20150426 are available in the diffs/ subdirectory.

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

Gerald Pfeifer | 3 May 13:15 2015

Re: wwwdocs/htdocs/onlinedocs/5.1.0 - New directory

Hi Jakub,

would this better be instead of 5.1.0
to be in alignment with the release?


PS. I can make this change on (probably using a redirect
for the original link).

Campbell Barton | 2 May 19:35 2015

Couldn't `function(arg[static 3])` imply nonnull and array size in C?

Hi, using GCC 5.1 found that using static can be used to define a
variable as having at least N elements in the array, and that its not


Given the simple function:

void print_v3(float v[static 3])
    printf("%f %f %f\n", v[0], v[1], v[2]);

Calling `foo(NULL);` or `{ float v[2]; foo(v); }` should be able to
cause a warning, it would be useful since this is a farily

In fact I found Clang 3.6 does this already. eg:
warning: array argument is too small; contains 2 elements, callee
requires at least 3 [-Warray-bounds]

Is there any reason GCC couldn't do the same?


- Campbell