Using -save-temps and @file should also save the intermediate @file used by the driver?

2011-05-10 Thread Ian Bolton
Does anyone have some thoughts they'd like to share on this:

"When you compile anything using @file support, the driver assumes @file
(at_file_supplied is true) is allowed and may pass options to the linker via
@file using a *temporary* file.

When -save-temps is also used, the temporary @file passed to the linker
should
also be saved.

Saving the temporary @file passed to the linker allows a developer to re-run
just the collect2/ld command.

On trunk this means that gcc/gcc.c (create_at_file) should honour the
save_temps_flag, saving the temporary @file for later analysis or use."

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







Re: Using -save-temps and @file should also save the intermediate @file used by the driver?

2011-05-10 Thread Richard Guenther
On Tue, May 10, 2011 at 10:28 AM, Ian Bolton  wrote:
> Does anyone have some thoughts they'd like to share on this:
>
> "When you compile anything using @file support, the driver assumes @file
> (at_file_supplied is true) is allowed and may pass options to the linker via
> @file using a *temporary* file.
>
> When -save-temps is also used, the temporary @file passed to the linker
> should
> also be saved.
>
> Saving the temporary @file passed to the linker allows a developer to re-run
> just the collect2/ld command.
>
> On trunk this means that gcc/gcc.c (create_at_file) should honour the
> save_temps_flag, saving the temporary @file for later analysis or use."

For such driver bits you should specify -Wl,-debug which saves those
files.

Richard.

> From: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44273
>
>
>
>
>
>


Randomization in gcc generates different assembly file

2011-05-10 Thread fanqifei
Hi all,

I am poring gcc 4.3.2 for a micro-controller and use it to compile C
source code.
I found that gcc is very sensitive to small changes in C source code
even if the change doesn't affect any function of the source code.
For example, a source file foo.c includes a header file foo.h.
If one macro definition is added to foo.h and the macro is not used in
foo.c. The assembly file foo.s is still changed and a few instructions
swapped positions .
I checked foo.c.129t.final_cleanup and found difference in it.

I am wondering what caused the change in foo.o. Is there any
randomization in gcc?
How can I make the assembly file foo.s same no matter foo.h is changed or not?

Thanks
-Qifei Fan


Re: Randomization in gcc generates different assembly file

2011-05-10 Thread Richard Guenther
On Tue, May 10, 2011 at 12:08 PM, fanqifei  wrote:
> Hi all,
>
> I am poring gcc 4.3.2 for a micro-controller and use it to compile C
> source code.
> I found that gcc is very sensitive to small changes in C source code
> even if the change doesn't affect any function of the source code.
> For example, a source file foo.c includes a header file foo.h.
> If one macro definition is added to foo.h and the macro is not used in
> foo.c. The assembly file foo.s is still changed and a few instructions
> swapped positions .
> I checked foo.c.129t.final_cleanup and found difference in it.
>
> I am wondering what caused the change in foo.o. Is there any
> randomization in gcc?
> How can I make the assembly file foo.s same no matter foo.h is changed or not?

alias analysis behavior depends on DECL_UIDs for partitioning which
unfortunately shows this behavior in older releases (fixed as of GCC 4.5
at least).

Richard.

> Thanks
> -Qifei Fan
>


Re: Randomization in gcc generates different assembly file

2011-05-10 Thread fanqifei
On Tue, May 10, 2011 at 6:23 PM, Richard Guenther
 wrote:
> On Tue, May 10, 2011 at 12:08 PM, fanqifei  wrote:
>> Hi all,
>>
>> I am poring gcc 4.3.2 for a micro-controller and use it to compile C
>> source code.
>> I found that gcc is very sensitive to small changes in C source code
>> even if the change doesn't affect any function of the source code.
>> For example, a source file foo.c includes a header file foo.h.
>> If one macro definition is added to foo.h and the macro is not used in
>> foo.c. The assembly file foo.s is still changed and a few instructions
>> swapped positions .
>> I checked foo.c.129t.final_cleanup and found difference in it.
>>
>> I am wondering what caused the change in foo.o. Is there any
>> randomization in gcc?
>> How can I make the assembly file foo.s same no matter foo.h is changed or 
>> not?
>
> alias analysis behavior depends on DECL_UIDs for partitioning which
> unfortunately shows this behavior in older releases (fixed as of GCC 4.5
> at least).
>
> Richard.
Which file or fucntion should I look into? Maybe I can work around in 4.3.2
What change in 4.5 fixed it?

Thanks.
-Qifei Fan


Re: Randomization in gcc generates different assembly file

2011-05-10 Thread Richard Guenther
On Tue, May 10, 2011 at 1:43 PM, fanqifei  wrote:
> On Tue, May 10, 2011 at 6:23 PM, Richard Guenther
>  wrote:
>> On Tue, May 10, 2011 at 12:08 PM, fanqifei  wrote:
>>> Hi all,
>>>
>>> I am poring gcc 4.3.2 for a micro-controller and use it to compile C
>>> source code.
>>> I found that gcc is very sensitive to small changes in C source code
>>> even if the change doesn't affect any function of the source code.
>>> For example, a source file foo.c includes a header file foo.h.
>>> If one macro definition is added to foo.h and the macro is not used in
>>> foo.c. The assembly file foo.s is still changed and a few instructions
>>> swapped positions .
>>> I checked foo.c.129t.final_cleanup and found difference in it.
>>>
>>> I am wondering what caused the change in foo.o. Is there any
>>> randomization in gcc?
>>> How can I make the assembly file foo.s same no matter foo.h is changed or 
>>> not?
>>
>> alias analysis behavior depends on DECL_UIDs for partitioning which
>> unfortunately shows this behavior in older releases (fixed as of GCC 4.5
>> at least).
>>
>> Richard.
> Which file or fucntion should I look into? Maybe I can work around in 4.3.2

Look into tree-ssa-alias.c and tree-ssa-structalias.c

> What change in 4.5 fixed it?

A complete rewrite of the above ...

Richard.

> Thanks.
> -Qifei Fan
>


Re: What is the type of imm16 in builtin-func?

2011-05-10 Thread Richard Sandiford
Liu  writes:
> I write a pattern like this:
> (define_insn "extrv4di"
>   [(set (match_operand:V4DI 0 "register_operand" "=Z")
>   (unspec:V4DI
> [(match_operand:V4DI 1 "register_operand" "Z")
>  (match_operand:SI 2 "immediate_operand" "")]
> UNSPEC_EXTR))]
>   "TARGET_VECTORS"
>   "extrd\t%0,%1,%2"
>   [(set_attr "type" "vadd")])
>
> and the the code in mips.c:
> #define CODE_FOR_extrd CODE_FOR_extrv4di
>   XX_BUILTIN (extrd, MIPS_V4DI_FTYPE_V4DI_INT),
>
> define a macro in mips.md:
>(UNSPEC_EXTR   821)
>
> the xx.h:
> __extension__ static __inline int64x4_t __attribute__ ((__always_inline__))
> extrd (int64x4_t s, const int i)
> {
>   return __builtin_extrd (s, i);
> }
>
> When I write a testcase like:
> int64x4_t vec_vpextrd (int64x4_t s, const int t)
> {
>   int64x4_t r;
>   r = vpextrd (s, t);
>   return r;
> }
>
> I get a error:
> /opt/cross-tools/bin/../lib/gcc/mips64el-unknown-linux-gnu/4.5.1/include/xx.h:1535:31:
> error: invalid argument to built-in function
>
> What should I do? What's the type of imm8/imm16 in builtin-func?

Not sure if you've already worked this out, but I think the problem
is that the "t" in vec_vpextrd is not a _known_ constant integer.
vec_vpextrd must either pass a specific integer itself or must
also be marked as always_inline (like vpextrd already is).

Richard


Re: Randomization in gcc generates different assembly file

2011-05-10 Thread fanqifei
>> Which file or fucntion should I look into? Maybe I can work around in 4.3.2
>
> Look into tree-ssa-alias.c and tree-ssa-structalias.c
>
>> What change in 4.5 fixed it?
>
> A complete rewrite of the above ...
>
> Richard.
So is there easy way to work around in 4.3.2 to disable the randomization?
I am not familiar with tree ssa.  Hope there is. :(

-- 
-Qifei Fan


Re: I've successfully build 4.5.3 on Solaris x86

2011-05-10 Thread Dennis Clarke

> uname -a :
> SunOS devsolx86 5.10 Generic_139556-08 i86pc i386 i86pc Solaris
>
> config.guess output:
> i386-pc-solaris2.10
>
> gcc -v output:
> Using built-in specs.
> COLLECT_GCC=gcc
> COLLECT_LTO_WRAPPER=/export/usr_local/gcc4/bin/../libexec/gcc/i386-pc-solaris2.10/4.5.3/lto-wrapper
> Target: i386-pc-solaris2.10
> Configured with: ../configure --with-gnu-as --with-as=/usr/sfw/bin/gas
> --without-gnu-ld --with-ld=/usr/ccs/bin/ld --enable-shared
> --enable-languages=c,c++ --with-gmp=/usr/local --with-mpfr=/usr/local
> --prefix=/usr/local/gcc4
> Thread model: posix
> gcc version 4.5.3 (GCC)
>
> Only enabled C/C++
>
> Had to install mpc-0.8.1 (newer one didn't compile).  used gmp-5.0.2,
> mpfr-3.0.1
>

see http://gcc.gnu.org/ml/gcc-testresults/2011-05/msg00795.html

New mpc compiles fine on Solaris 8 and 10 on Sparc v7, v8, v9 and on i386
and AMD64. I have not bothered with Intel i7 as I don't see it as any
different from an x86_64 build on AMD Opterons. At least, the result is
the same.

-- 
Dennis Clarke
dcla...@opensolaris.ca  <- Email related to the open source Solaris
dcla...@blastwave.org   <- Email related to open source for Solaris




basic bloc chaining: using dominance

2011-05-10 Thread Pierre Vittet

Hello,

I am working on a plugin at the GIMPLE state, I am parsing basic blocks 
and I need to check that a call to foo() is only present once in a 
function. Howerver, it can be present several times if it is in 
different basic blocks and only one is executed at execution time.


I think the most convenient way is to use dominance relation between the 
basic blocks: I can warn in a basic block A calling the foo() function 
only if there is a block B calling foo and dominating A. In others 
cases, I cannot be sure that there is several calls to foo().


In the file gcc/dominance.c, there is a dominated_by_p function which 
allows to test dominance between 2 basic blocks and I would like to use 
it to solve this problem.


I would like to have your opinion, does it looks the google solution to 
the problem or is there another way to do this?


If this is a good solution, I will implement a primitive in MELT 
allowing to use dominated_by_p function in MELT.


Thanks!

Pierre Vittet

My Google Summer Of Code projet: 
http://www.google-melange.com/gsoc/project/google/gsoc2011/piervit/15001


Re: Randomization in gcc generates different assembly file

2011-05-10 Thread Ian Lance Taylor
fanqifei  writes:

>>> Which file or fucntion should I look into? Maybe I can work around in 4.3.2
>>
>> Look into tree-ssa-alias.c and tree-ssa-structalias.c
>>
>>> What change in 4.5 fixed it?
>>
>> A complete rewrite of the above ...
>>
>> Richard.
> So is there easy way to work around in 4.3.2 to disable the randomization?
> I am not familiar with tree ssa.  Hope there is. :(

You could disable alias analysis via -fno-strict-aliasing.  Of course
that will affect optimization.

I can't think of another easy way.

Ian


Re: basic bloc chaining: using dominance

2011-05-10 Thread Ian Lance Taylor
Pierre Vittet  writes:

> I am working on a plugin at the GIMPLE state, I am parsing basic
> blocks and I need to check that a call to foo() is only present once
> in a function. Howerver, it can be present several times if it is in
> different basic blocks and only one is executed at execution time.
>
> I think the most convenient way is to use dominance relation between
> the basic blocks: I can warn in a basic block A calling the foo()
> function only if there is a block B calling foo and dominating A. In
> others cases, I cannot be sure that there is several calls to foo().
>
> In the file gcc/dominance.c, there is a dominated_by_p function which
> allows to test dominance between 2 basic blocks and I would like to
> use it to solve this problem.
>
> I would like to have your opinion, does it looks the google solution
> to the problem or is there another way to do this?
>
> If this is a good solution, I will implement a primitive in MELT
> allowing to use dominated_by_p function in MELT.

Yes, dominated_by_p and friends are the right way to test for basic
block dominance.  Note that you have to build the graph first; see uses
of calculate_dominance_info.

Ian


Re: Randomization in gcc generates different assembly file

2011-05-10 Thread Richard Guenther
On Tue, May 10, 2011 at 4:20 PM, Ian Lance Taylor  wrote:
> fanqifei  writes:
>
 Which file or fucntion should I look into? Maybe I can work around in 4.3.2
>>>
>>> Look into tree-ssa-alias.c and tree-ssa-structalias.c
>>>
 What change in 4.5 fixed it?
>>>
>>> A complete rewrite of the above ...
>>>
>>> Richard.
>> So is there easy way to work around in 4.3.2 to disable the randomization?
>> I am not familiar with tree ssa.  Hope there is. :(
>
> You could disable alias analysis via -fno-strict-aliasing.  Of course
> that will affect optimization.
>
> I can't think of another easy way.

I think that won't help - we still do all the partitioning work thus the
non-TBAA path will be affected.

Richard.

> Ian
>


Debugging information in C macros

2011-05-10 Thread Michael T

Hello all,

I was wondering if it is possible to improve the debugging information
generated by gcc when resolving C macros? Just as an example, when I
preprocessed the following C file:

extern int printf (__const char *__restrict __format, ...);

#define my_macro(i) \
  do { \
    *(i) = 1; \
    *(i) += 2; \
  } while(0)

int main(void)
{
    int i = 0;
    printf("i = %d\n", i);
    my_macro(&i);
    printf("i = %d\n", i);
    return 0;
}

I got the following output:

# 1 "test.c"
# 1 ""
# 1 ""
# 1 "test.c"
extern int printf (__const char *__restrict __format, ...);







int main(void)
{
    int i = 0;
    printf("i = %d\n", i);
    do { *(&i) = 1; *(&i) += 2; } while(0);
    printf("i = %d\n", i);
    return 0;
}

By adding a couple of "#" lines as follows I was able to much improve
the debugging experience:

# 1 "test.c"
# 1 ""
# 1 ""
# 1 "test.c"
extern int printf (__const char *__restrict __format, ...);







int main(void)
{
    int i = 0;
    printf("i = %d\n", i);
# 4 "test.c"
    do {
# 5 "test.c"
    *(&i) = 1;
# 6 "test.c"
    *(&i) += 2;
# 7 "test.c"
    } while(0);
# 14 "test.c"
    printf("i = %d\n", i);
    return 0;
}

I wonder whether this couldn't be done by the gcc preprocessor? Or does
standards compliance forbid this?
( [ http://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html ] didn't
quite make this clear, and it isn't clear to me whether those "#" lines
are part of the standard.)

Regards,

Michael
  


Re: Debugging information in C macros

2011-05-10 Thread Basile Starynkevitch
On Tue, 10 May 2011 17:33:57 +0200
Michael T  wrote:

> I was wondering if it is possible to improve the debugging information
> generated by gcc when resolving C macros? Just as an example, when I
> preprocessed the following C file:
> 
> extern int printf (__const char *__restrict __format, ...);
> 
> #define my_macro(i) \
>   do { \
>     *(i) = 1; \
>     *(i) += 2; \
>   } while(0)
> 

I am not a standard guru, but in my naive view this counts as one
single logical line (because backslash newline is handled by
preprocessing), so expansion of that macro invocation should be one
line also.

Besides, I believe that there are lots of actual C code which depends
upon that behavior. Code like
#define my_fatal_at(Msg,Line) do { \
  printf ("%s:%d fatal error: %s\n", __FILE__, Line, Msg); \
  abort (); \
} while(0); 

#define my_fatal(Msg) my_fatal_at(Msg,__LINE__)

My feeling is that with your proposal, the line number reported would
be wrong.

(I would image that both Linux Kernel's printk and Gtk g_assert might
behave similarily)

But maybe I didn't understood what you are proposing, or what the C
standards are saying. So I might be wrong.

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 mine, sont seulement les miennes} ***


RE: Debugging information in C macros

2011-05-10 Thread Michael T

> From: bas...@starynkevitch.net
> On Tue, 10 May 2011 17:33:57 +0200
> Michael T  wrote:
> > I was wondering if it is possible to improve the debugging information
> > generated by gcc when resolving C macros? Just as an example, when I
> > preprocessed the following C file:
[...]
> I am not a standard guru, but in my naive view this counts as one
> single logical line (because backslash newline is handled by
> preprocessing), so expansion of that macro invocation should be one
> line also.
>
> Besides, I believe that there are lots of actual C code which depends
> upon that behavior. Code like
> #define my_fatal_at(Msg,Line) do { \
> printf ("%s:%d fatal error: %s\n", __FILE__, Line, Msg); \
> abort (); \
> } while(0);
[...]

Sadly that sounds rather convincing.  Thanks for the answer and sorry for the 
noise.

Regards,

Michael
  


RE: Debugging information in C macros

2011-05-10 Thread Michael T

> From: rasel...@hotmail.com
> > From: bas...@starynkevitch.net
> > On Tue, 10 May 2011 17:33:57 +0200
> > Michael T wrote:
> > > I was wondering if it is possible to improve the debugging information
> > > generated by gcc when resolving C macros? Just as an example, when I
> > > preprocessed the following C file:
[...]
> > Besides, I believe that there are lots of actual C code which depends
> > upon that behavior. Code like
> > #define my_fatal_at(Msg,Line) do { \
> > printf ("%s:%d fatal error: %s\n", __FILE__, Line, Msg); \
> > abort (); \
> > } while(0);
[...]
> Sadly that sounds rather convincing.  Thanks for the answer and sorry for the 
> noise.

Although thinking about it, __FILE__ and __LINE__ are also handled by the
preprocessor, so they need not be affected by "#" lines.  I'm sure there must be
a reason though why gcc isn't doing this already.

Regards,

Michael
  


Re: Debugging information in C macros

2011-05-10 Thread Tom Tromey
> "Michael" == Michael T  writes:

Michael> I was wondering if it is possible to improve the debugging
Michael> information generated by gcc when resolving C macros?

It could be done, but nobody has tried.

Michael> I wonder whether this couldn't be done by the gcc preprocessor?
Michael> Or does standards compliance forbid this?

A DWARF extension might be needed, but that is not a big deal.  The bulk
of the work will be defining exactly what you want in various cases, and
then of course the implementation in GCC.

It isn't clear to me that you always want to emit this information.
E.g., there are some hairy macros in libc that, presumably, only libc
developers would ever want to step through.

Look for a 6 part series from Dodji Seketeli in December 2010 for some
work that would be a good starting point for this.  The first message is
titled "[PATCH 0/6] Tracking locations of tokens resulting from macro
expansion".  This series changes GCC to more accurately track source
locations through macro expansion.

Tom


Re: IRA improvement patch

2011-05-10 Thread Vladimir Makarov

On 05/06/2011 10:21 AM, Hari Sandanagobalane wrote:

Hi Vlad,
I found a problem with your IRA improvement checkin r171649 on 
29-3-2011. I can't get picochip port to build with this change. The 
problem is in the function "clarify_prohibited_class_mode_regs" in 
ira.c:1413. The code reproduced here is


/* Clarify IRA_PROHIBITED_CLASS_MODE_REGS by excluding hard registers
   spanning from one register pressure class to another one.  It is
   called after defining the pressure classes.  */
static void
clarify_prohibited_class_mode_regs (void)
{
  int j, k, hard_regno, cl, pclass, nregs;

  for (cl = (int) N_REG_CLASSES - 1; cl >= 0; cl--)
for (j = 0; j < NUM_MACHINE_MODES; j++)
  for (k = ira_class_hard_regs_num[cl] - 1; k >= 0; k--)
{
  hard_regno = ira_class_hard_regs[cl][k];
  if (TEST_HARD_REG_BIT 
(ira_prohibited_class_mode_regs[cl][j], hard_regno))

continue;
  nregs = hard_regno_nregs[hard_regno][j];
  pclass = ira_pressure_class_translate[REGNO_REG_CLASS 
(hard_regno)];

  for (nregs-- ;nregs >= 0; nregs--)
if (((enum reg_class) pclass
 != ira_pressure_class_translate[REGNO_REG_CLASS
 (hard_regno + nregs)]))
  {
SET_HARD_REG_BIT (ira_prohibited_class_mode_regs[cl][j],
  hard_regno);
break;
  }
}
}


I do not understand the functionality of the code, but i get a 
segfault in the line


if (((enum reg_class) pclass
 != ira_pressure_class_translate[REGNO_REG_CLASS
 (hard_regno + nregs)]))

In the case where it segfaults, the hard_regno+nregs is greater than 
FIRST_PSEUDO_REGISTER. It leads to access beyond the end of 
REGNO_REG_CLASS array.


I realise that hard_regno_nregs happily gives you a value beyond the 
FIRST_PSEUDO_REGISTER. I can change it so it wouldn't do that, if that 
is the solution to this. Can you clarify?



Sorry for the delay with the answer, Hari.  I was on vacation last week.

Thanks for pointing the problem.  Usually ports have some virtual 
registers after the real hard registers before the first pseudo-register 
and this did not happen for other ports.


So your proposal is right one.  You could add `hard_regno + nregs >= 
FIRST_PSEUDO_REGISTER ||' at the start of if-condition and send the 
patch for approval.


Vlad


Re: Debugging information in C macros

2011-05-10 Thread Richard Earnshaw

On Tue, 2011-05-10 at 17:33 +0200, Michael T wrote:
> Hello all,
> 
> I was wondering if it is possible to improve the debugging information
> generated by gcc when resolving C macros? Just as an example, when I
> preprocessed the following C file:
> 

Have you tried '-g3'?

R.





[google] Merged google/main -> google/gcc-4_6 rev 173605

2011-05-10 Thread Diego Novillo
This merge brings all the changes in google/main up to rev
173605.

Validated on x86_64.


Diego.

Merged revisions 
173258,173353,173395,173398,173411,173416,173499,173504,173526,173605 via 
svnmerge from 
svn+ssh://gcc.gnu.org/svn/gcc/branches/google/main


  r173258 | cgd | 2011-05-02 12:34:02 -0400 (Mon, 02 May 2011) | 5 lines
  
  2011-05-02  Chris Demetriou  
  
  * config/i386/i386.c (get_pc_thunk_name): Make 32-bit
  thunk prefix be __x86.get_pc_thunk.

  r173353 | davidxl | 2011-05-04 00:15:49 -0400 (Wed, 04 May 2011) | 1 line
  
  backport 173177,173147 etc from trunk

  r173395 | eraman | 2011-05-04 17:02:51 -0400 (Wed, 04 May 2011) | 23 lines
  
  2011-05-04  Silvius Rus  
  
* doc/invoke.texi: Document -fprofile-generate-sampling option.
* gcov-io.h (__gcov_set_sampling_rate): New declaration.
* profile.c (branch_prob): Add support for sampled profile
collection.
* profile.h (add_sampling_to_edge_counters): New declaration.
* common.opt (fprofile-generate-sampling): New option.
* tree-profile: Include header files; define EDGE_COUNTER_STMT_COUNT.
(instrumentation_to_be_sampled, gcov_sample_counter_decl)
(gcov_sampling_rate_decl): New globals.
(insert_if_then, add_sampling_wrapper, is_instrumentation_to_be_sampled)
(add_sampling_to_edge_counters, gimple_init_instrumentation_sampling):
New functions.
(gimple_init_edge_profiler): Call gimple_init_instrumentation_sampling.
(gimple_gen_edge_profiler): Mark start of instrumentation block.
* libgcov.c (__gcov_sampling_rate): New extern declaration.
(gcov_sampling_rate_initialized, __gcov_sample_counter): New globals.
(gcov_exit): Set sampling rate; minor coding style fixes.
(__gcov_init): Initialize __gcov_sampling_rate.
* params.def (PARAM_PROFILE_GENERATE_SAMPLING_RATE): New parameter.

  r173398 | tmsriram | 2011-05-04 18:15:16 -0400 (Wed, 04 May 2011) | 46 lines
  
  2011-05-04  Sriraman Tallam  
  
* tree-pass.h (pass_tree_convert_builtin_dispatch): New pass.
(pass_ipa_multiversion_dispatch): New pass.
* builtin-types.def (BT_PTR_FN_INT): New pointer type.
(BT_FN_INT_PTR_FN_INT_PTR_PTR_VAR): New function type for 
__builtin_dispatch.
* builtins.def (BUILT_IN_DISPATCH): New builtin to
support multi-version calls.
* mversn-dispatch.c: New file.
* timevar.def (TV_MVERSN_DISPATCH): New time var.
* common.opt (fclone-hot-version-paths): New flag.
* Makefile.in (mversn-dispatch.o): New rule.
* passes.c (init_optimization_passes): Add the new
multi-version and dispatch passes to the pass list.
* params.def (PARAM_NUMBER_OF_MVERSN_CLONES): Define.
(PARAM_MVERSN_CLONE_CGRAPH_DEPTH): Define.
* doc/invoke.texi (mversn-clone-depth): Document.
(num-mversn-clones): Document.
(fclone-hot-version-paths): Document.
* c-family/c-common.c (handle_version_selector_attribute): New function.
(c_common_attribute_table): New attribute "version_selector".
* testsuite/gcc.dg/mversn7.c: New test.
* testsuite/gcc.dg/mversn4.c: New test.
* testsuite/gcc.dg/mversn4.h: New test.
* testsuite/gcc.dg/mversn4a.c: New test.
* testsuite/gcc.dg/torture/mversn1.c: New test.
* testsuite/gcc.dg/mversn2.c: New test.
* testsuite/gcc.dg/mversn6.c: New test.
* testsuite/gcc.dg/mversn3.c: New test.
* testsuite/g++.dg/mversn8.C: New test.
* testsuite/g++.dg/mversn10a.C: New test.
* testsuite/g++.dg/mversn14a.C: New test.
* testsuite/g++.dg/tree-prof/mversn13.C: New test.
* testsuite/g++.dg/tree-prof/mversn15.C: New test.
* testsuite/g++.dg/tree-prof/mversn15a.C: New test.
* testsuite/g++.dg/mversn9.C: New test.
* testsuite/g++.dg/mversn10.C: New test.
* testsuite/g++.dg/mversn12.C: New test.
* testsuite/g++.dg/mversn14.C: New test.
* testsuite/g++.dg/mversn16.C: New test.
* testsuite/g++.dg/torture/mversn11.C: New test.
* testsuite/g++.dg/torture/mversn5.C: New test.
* testsuite/g++.dg/torture/mversn5.h: New test.
* testsuite/g++.dg/torture/mversn5a.C: New test.

  r173411 | cgd | 2011-05-04 21:47:55 -0400 (Wed, 04 May 2011) | 14 lines
  
  2011-05-04  Chris Demetriou  
  
Backport from trunk r173391:
2011-05-04  Chris Demetriou  
  
* config/i386/morestack.S (__i686.get_pc_thunk.bx): Rename to...
(__x86.get_pc_thunk.bx): ...this.
(__morestack): Adjust for rename, remove undef of __i686.
  
Backport from trunk r173345:
2011-05-03  Chris Demetriou  
  
* config/i386/morestack.S (__i686.get_pc_thunk.bx): New.

  r173416 | davidxl | 2011-05-05 01:43:59 -0400 (Thu, 05 May 2011) | 1 line
  
 

gcc-4.4-20110510 is now available

2011-05-10 Thread gccadmin
Snapshot gcc-4.4-20110510 is now available on
  ftp://gcc.gnu.org/pub/gcc/snapshots/4.4-20110510/
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 173635

You'll find:

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

  MD5=1c42348d4dee3771d167de8c0c9f4c02
  SHA1=9ac578ff1e7a4641f83b00229c9216d81cef11a9

 gcc-core-4.4-20110510.tar.bz2C front end and core compiler

  MD5=96e39fb240742920e0f1c1de25cb36e5
  SHA1=41e459711e12d8d4254274d9866cde2353eeb885

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

  MD5=68db5e0745e407de6a2d3fc1a92beb77
  SHA1=cd138e0db3a95b2eded564e1aacef05ed5e45846

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

  MD5=1cf1ebc89813af0a79cdbd49c2ba3cec
  SHA1=9b6ec439a15d7bd786c0fcf3aec15a2c2882141a

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

  MD5=42a60aed2eaa2c8e0aa61c88387f4d08
  SHA1=bd158906e63f868665c7d7658fe4bcfb9822d0e7

 gcc-go-4.4-20110510.tar.bz2  Go front end and runtime

  MD5=d58fab212a188b144e13be80d100e27a
  SHA1=414d1c65c5489b143828012d69f5e8893fc1eca0

 gcc-java-4.4-20110510.tar.bz2Java front end and runtime

  MD5=0cbbfd5c1a208aca2b9fc4b7fab71420
  SHA1=49cd9d616990936d88c63916e3b3fe59ed0aa2ad

 gcc-objc-4.4-20110510.tar.bz2Objective-C front end and runtime

  MD5=29ea0496697815e3313b47d3f8c84a1e
  SHA1=77d65991db53225e30636df51f8f3d9f8b2fd845

 gcc-testsuite-4.4-20110510.tar.bz2   The GCC testsuite

  MD5=af4b60732562ac790cd330c0a9841d52
  SHA1=b487f7f72489735b714f8b6cf3ad13700c448bfd

Diffs from 4.4-20110503 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.


[google] Merged gcc-4_6-branch into google/gcc-4_6

2011-05-10 Thread Diego Novillo
This merge brings every change in gcc-4_6-branch up to rev
173632.

Validated on x86_64.


Diego.