summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Instrument built-in memory access function callsdodji2012-11-124-30/+650
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch instruments many memory access patterns through builtins. Basically, for a call like: __builtin_memset (from, 0, n_bytes); the patch would only instrument the accesses at the beginning and at the end of the memory region [from, from + n_bytes]. This is the strategy used by the llvm implementation of asan. This instrumentation is done for all the memory access builtin functions that expose a well specified memory region -- one that explicitly states the number of bytes accessed in the region. A special treatment is used for __builtin_strlen. The patch instruments the access to the first byte of its argument, as well as the access to the byte (of the argument) at the offset returned by strlen. For the __sync_* and __atomic* calls the patch instruments the access to the bytes pointed to by the argument. While doing this, I have added a new parameter to build_check_stmt to decide whether to insert the instrumentation code before or after the statement iterator. This allows us to do away with the gsi_{next,prev} dance we were doing in the callers of this function. Tested by running cc1 -fasan on variations of simple programs like: int foo () { char foo[10] = {0}; foo[0] = 't'; foo[1] = 'e'; foo[2] = 's'; foo[3] = 't'; int l = __builtin_strlen (foo); int n = sizeof (foo); __builtin_memset (&foo[4], 0, n - 4); __sync_fetch_and_add (&foo[11], 1); return l; } and by starring at the gimple output which for this function is: ;; Function foo (foo, funcdef_no=0, decl_uid=1714, cgraph_uid=0) foo () { int n; int l; char foo[10]; int D.1725; char * D.1724; int D.1723; long unsigned int D.1722; int D.1721; long unsigned int D.1720; long unsigned int _1; int _4; long unsigned int _5; int _6; char * _7; int _8; char * _9; unsigned long _10; unsigned long _11; unsigned long _12; signed char * _13; signed char _14; _Bool _15; unsigned long _16; signed char _17; _Bool _18; _Bool _19; char * _20; unsigned long _21; unsigned long _22; unsigned long _23; signed char * _24; signed char _25; _Bool _26; unsigned long _27; signed char _28; _Bool _29; _Bool _30; char * _31; unsigned long _32; unsigned long _33; unsigned long _34; signed char * _35; signed char _36; _Bool _37; unsigned long _38; signed char _39; _Bool _40; _Bool _41; char * _42; unsigned long _43; unsigned long _44; unsigned long _45; signed char * _46; signed char _47; _Bool _48; unsigned long _49; signed char _50; _Bool _51; _Bool _52; char * _53; unsigned long _54; unsigned long _55; unsigned long _56; signed char * _57; signed char _58; _Bool _59; unsigned long _60; signed char _61; _Bool _62; _Bool _63; char[10] * _64; unsigned long _65; unsigned long _66; unsigned long _67; signed char * _68; signed char _69; _Bool _70; unsigned long _71; signed char _72; _Bool _73; _Bool _74; unsigned long _75; unsigned long _76; unsigned long _77; signed char * _78; signed char _79; _Bool _80; unsigned long _81; signed char _82; _Bool _83; _Bool _84; long unsigned int _85; long unsigned int _86; char * _87; char * _88; unsigned long _89; unsigned long _90; unsigned long _91; signed char * _92; signed char _93; _Bool _94; unsigned long _95; signed char _96; _Bool _97; _Bool _98; char * _99; unsigned long _100; unsigned long _101; unsigned long _102; signed char * _103; signed char _104; _Bool _105; unsigned long _106; signed char _107; _Bool _108; _Bool _109; <bb 2>: foo = {}; _9 = &foo[0]; _10 = (unsigned long) _9; _11 = _10 >> 3; _12 = _11 + 17592186044416; _13 = (signed char *) _12; _14 = *_13; _15 = _14 != 0; _16 = _10 & 7; _17 = (signed char) _16; _18 = _17 >= _14; _19 = _15 & _18; if (_19 != 0) goto <bb 5>; else goto <bb 4>; <bb 5>: __asan_report_store1 (_10); <bb 4>: foo[0] = 116; _20 = &foo[1]; _21 = (unsigned long) _20; _22 = _21 >> 3; _23 = _22 + 17592186044416; _24 = (signed char *) _23; _25 = *_24; _26 = _25 != 0; _27 = _21 & 7; _28 = (signed char) _27; _29 = _28 >= _25; _30 = _26 & _29; if (_30 != 0) goto <bb 7>; else goto <bb 6>; <bb 7>: __asan_report_store1 (_21); <bb 6>: foo[1] = 101; _31 = &foo[2]; _32 = (unsigned long) _31; _33 = _32 >> 3; _34 = _33 + 17592186044416; _35 = (signed char *) _34; _36 = *_35; _37 = _36 != 0; _38 = _32 & 7; _39 = (signed char) _38; _40 = _39 >= _36; _41 = _37 & _40; if (_41 != 0) goto <bb 9>; else goto <bb 8>; <bb 9>: __asan_report_store1 (_32); <bb 8>: foo[2] = 115; _42 = &foo[3]; _43 = (unsigned long) _42; _44 = _43 >> 3; _45 = _44 + 17592186044416; _46 = (signed char *) _45; _47 = *_46; _48 = _47 != 0; _49 = _43 & 7; _50 = (signed char) _49; _51 = _50 >= _47; _52 = _48 & _51; if (_52 != 0) goto <bb 11>; else goto <bb 10>; <bb 11>: __asan_report_store1 (_43); <bb 10>: foo[3] = 116; _53 = (char *) &foo; _54 = (unsigned long) _53; _55 = _54 >> 3; _56 = _55 + 17592186044416; _57 = (signed char *) _56; _58 = *_57; _59 = _58 != 0; _60 = _54 & 7; _61 = (signed char) _60; _62 = _61 >= _58; _63 = _59 & _62; if (_63 != 0) goto <bb 13>; else goto <bb 12>; <bb 13>: __asan_report_load1 (_54); <bb 12>: _1 = __builtin_strlen (&foo); _64 = _53 + _1; _65 = (unsigned long) _64; _66 = _65 >> 3; _67 = _66 + 17592186044416; _68 = (signed char *) _67; _69 = *_68; _70 = _69 != 0; _71 = _65 & 7; _72 = (signed char) _71; _73 = _72 >= _69; _74 = _70 & _73; if (_74 != 0) goto <bb 15>; else goto <bb 14>; <bb 15>: __asan_report_load1 (_65); <bb 14>: l_2 = (int) _1; n_3 = 10; _4 = n_3 + -4; _5 = (long unsigned int) _4; _6 = l_2 + 1; _7 = &foo[_6]; if (_5 != 0) goto <bb 17>; else goto <bb 16>; <bb 17>: _75 = (unsigned long) _7; _76 = _75 >> 3; _77 = _76 + 17592186044416; _78 = (signed char *) _77; _79 = *_78; _80 = _79 != 0; _81 = _75 & 7; _82 = (signed char) _81; _83 = _82 >= _79; _84 = _80 & _83; _85 = _5; _86 = _85 - 1; _87 = _7; _88 = _87 + _86; _89 = (unsigned long) _88; _90 = _89 >> 3; _91 = _90 + 17592186044416; _92 = (signed char *) _91; _93 = *_92; _94 = _93 != 0; _95 = _89 & 7; _96 = (signed char) _95; _97 = _96 >= _93; _98 = _94 & _97; if (_98 != 0) goto <bb 21>; else goto <bb 20>; <bb 21>: __asan_report_store1 (_89); <bb 20>: if (_84 != 0) goto <bb 19>; else goto <bb 18>; <bb 19>: __asan_report_store1 (_75); <bb 18>: <bb 16>: __builtin_memset (_7, 0, _5); _99 = &foo[11]; _100 = (unsigned long) _99; _101 = _100 >> 3; _102 = _101 + 17592186044416; _103 = (signed char *) _102; _104 = *_103; _105 = _104 != 0; _106 = _100 & 7; _107 = (signed char) _106; _108 = _107 >= _104; _109 = _105 & _108; if (_109 != 0) goto <bb 23>; else goto <bb 22>; <bb 23>: __asan_report_store1 (_100); <bb 22>: __sync_fetch_and_add_1 (&foo[11], 1); _8 = l_2; foo ={v} {CLOBBER}; <L1>: return _8; } ;; Function _GLOBAL__sub_I_00099_0_foo (_GLOBAL__sub_I_00099_0_foo, funcdef_no=1, decl_uid=1752, cgraph_uid=4) _GLOBAL__sub_I_00099_0_foo () { <bb 2>: __asan_init (); return; } gcc/ * gimple.h (is_gimple_builtin_call): Declare ... * gimple.c (is_gimple_builtin_call): ... New public function. * asan.c (insert_if_then_before_iter, instrument_mem_region_access, instrument_strlen_call, maybe_instrument_builtin_call, instrument_call): New static functions. (create_cond_insert_point): Renamed create_cond_insert_point_before_iter into this. Add a new parameter to decide whether to insert the condition before or after the statement iterator. (build_check_stmt): Adjust for the new create_cond_insert_point. Add a new parameter to decide whether to add the instrumentation code before or after the statement iterator. (instrument_assignment): Factorize from ... (transform_statements): ... here. Use maybe_instrument_call to instrument builtin function calls as well. (instrument_derefs): Adjust for the new parameter of build_check_stmt. Fix detection of bit-field access. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193440 138bc75d-0d04-0410-961f-82ee72b054a4
* Factorize condition insertion code out of build_check_stmtdodji2012-11-122-44/+81
| | | | | | | | | | | | | | | | | | | | | | | | This patch splits a new create_cond_insert_point_before_iter function out of build_check_stmt, to be used by a later patch. Tested by running cc1 -fasan on the test program below with and without the patch and by inspecting the gimple output to see that there is no change. void foo () { char foo[1] = {0}; foo[0] = 1; } gcc/ * asan.c (create_cond_insert_point_before_iter): Factorize out of ... (build_check_stmt): ... here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193439 138bc75d-0d04-0410-961f-82ee72b054a4
* Make build_check_stmt accept an SSA_NAME for its basedodji2012-11-122-13/+28
| | | | | | | | | | | | | | | | | | | | | | | This patch makes build_check_stmt accept its memory access parameter to be an SSA name. This is useful for a subsequent patch that will re-use. Tested by running cc1 -fasan on the program below with and without the patch and inspecting the gimple output to see that there is no change. void foo () { char foo[1] = {0}; foo[0] = 1; } gcc/ * asan.c (build_check_stmt): Accept the memory access to be represented by an SSA_NAME. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193438 138bc75d-0d04-0410-961f-82ee72b054a4
* Implement protection of global variablesdodji2012-11-125-38/+365
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch implements the protection of global variables. See the comments appended to the beginning of the asan.c file. * varasm.c: Include asan.h. (assemble_noswitch_variable): Grow size by asan_red_zone_size if decl is asan protected. (place_block_symbol): Likewise. (assemble_variable): If decl is asan protected, increase DECL_ALIGN if needed, and for decls emitted using assemble_variable_contents append padding zeros after it. * Makefile.in (varasm.o): Depend on asan.h. * asan.c: Include output.h. (asan_pp, asan_pp_initialized, asan_ctor_statements): New variables. (asan_pp_initialize, asan_pp_string): New functions. (asan_emit_stack_protection): Use asan_pp{,_initialized} instead of local pp{,_initialized} vars, use asan_pp_initialize and asan_pp_string helpers. (asan_needs_local_alias, asan_protect_global, asan_global_struct, asan_add_global): New functions. (asan_finish_file): Protect global vars that can be protected. Use asan_ctor_statements instead of ctor_statements * asan.h (asan_protect_global): New prototype. (asan_red_zone_size): New inline function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193437 138bc75d-0d04-0410-961f-82ee72b054a4
* Implement protection of stack variablesdodji2012-11-126-34/+514
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch implements the protection of stack variables. It lays out stack variables as well as the different red zones, emits some prologue code to populate the shadow memory as to poison (mark as non-accessible) the regions of the red zones and mark the regions of stack variables as accessible, and emit some epilogue code to un-poison (mark as accessible) the regions of red zones right before the function exits. * Makefile.in (asan.o): Depend on $(EXPR_H) $(OPTABS_H). (cfgexpand.o): Depend on asan.h. * asan.c: Include expr.h and optabs.h. (asan_shadow_set): New variable. (asan_shadow_cst, asan_emit_stack_protection): New functions. (asan_init_shadow_ptr_types): Initialize also asan_shadow_set. * cfgexpand.c: Include asan.h. Define HOST_WIDE_INT heap vector. (partition_stack_vars): If i is large alignment and j small alignment or vice versa, break out of the loop instead of continue, and put the test earlier. If flag_asan, break out of the loop if for small alignment size is different. (struct stack_vars_data): New type. (expand_stack_vars): Add DATA argument. Change PRED type to function taking size_t argument instead of tree. Adjust pred calls. Fill DATA in and add needed padding in between variables if -faddress-sanitizer. (defer_stack_allocation): Defer everything for flag_asan. (stack_protect_decl_phase_1, stack_protect_decl_phase_2): Take size_t index into stack_vars array instead of the decl directly. (asan_decl_phase_3): New function. (expand_used_vars): Return var destruction sequence. Adjust expand_stack_vars calls, add another one for flag_asan. Call asan_emit_stack_protection if expand_stack_vars added anything to the vectors. (expand_gimple_basic_block): Add disable_tail_calls argument. (gimple_expand_cfg): Pass true to it if expand_used_vars returned non-NULL. Emit the sequence returned by expand_used_vars after return_label. * asan.h (asan_emit_stack_protection): New prototype. (asan_shadow_set): New decl. (ASAN_RED_ZONE_SIZE, ASAN_STACK_MAGIC_LEFT, ASAN_STACK_MAGIC_MIDDLE, ASAN_STACK_MAGIC_RIGHT, ASAN_STACK_FRAME_MAGIC): Define. (asan_protect_stack_decl): New inline. * toplev.c (process_options): Also disable -faddress-sanitizer on !FRAME_GROWS_DOWNWARDS targets. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193436 138bc75d-0d04-0410-961f-82ee72b054a4
* Allow asan at -O0dodji2012-11-124-9/+46
| | | | | | | | | | | | | | This patch defines a new asan pass gate that is activated at -O0, in addition to the pass that was initially activated at -O3 level The patch also does some comment cleanups here and there. * asan.c (build_check_stmt): Rename join_bb variable to else_bb. (gate_asan_O0): New function. (pass_asan_O0): New variable. * passes.c (init_optimization_passes): Add pass_asan_O0. * tree-pass.h (pass_asan_O0): New declaration. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193435 138bc75d-0d04-0410-961f-82ee72b054a4
* Emit GIMPLE directly instead of gimplifying GENERIC.dodji2012-11-124-123/+200
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch cleanups the instrumentation code generation by emitting GIMPLE directly, as opposed to emitting GENERIC tree and then gimplifying them. It also does some cleanups here and there * Makefile.in (GTFILES): Add $(srcdir)/asan.c. (asan.o): Update the dependencies of asan.o. * asan.c (tm.h, tree.h, tm_p.h, basic-block.h, flags.h function.h, tree-inline.h, tree-dump.h, diagnostic.h, demangle.h, langhooks.h, ggc.h, cgraph.h, gimple.h): Remove these unused but included headers. (shadow_ptr_types): New variable. (report_error_func): Change is_store argument to bool, don't append newline to function name. (PROB_VERY_UNLIKELY, PROB_ALWAYS): Define. (build_check_stmt): Change is_store argument to bool. Emit GIMPLE directly instead of creating trees and gimplifying them. Mark the error reporting function as very unlikely. (instrument_derefs): Change is_store argument to bool. Use int_size_in_bytes to compute size_in_bytes, simplify size check. Use build_fold_addr_expr instead of build_addr. (transform_statements): Adjust instrument_derefs caller. Use gimple_assign_single_p as stmt test. Don't look at MEM refs in rhs2. (asan_init_shadow_ptr_types): New function. (asan_instrument): Don't push/pop gimplify context. Call asan_init_shadow_ptr_types if not yet initialized. * asan.h (ASAN_SHADOW_SHIFT): Adjust comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193434 138bc75d-0d04-0410-961f-82ee72b054a4
* Initial asan cleanupsdodji2012-11-129-21/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch defines a new asan_shadow_offset target macro, instead of having a mere macro in the asan.c file. It becomes thus cleaner to define the target macro for targets that supports asan, namely x86 for now. The ASAN_SHADOW_SHIFT (which, along with the asan_shadow_offset constant, is used to compute the address of the shadow memory byte for a given memory address) is defined in asan.h. gcc/ChangeLog * toplev.c (process_options): Warn and turn off -faddress-sanitizer if not supported by target. * asan.c: Include target.h. (asan_scale, asan_offset_log_32, asan_offset_log_64, asan_offset_log): Removed. (build_check_stmt): Use ASAN_SHADOW_SHIFT and targetm.asan_shadow_offset (). (asan_instrument): Don't initialize asan_offset_log. * asan.h (ASAN_SHADOW_SHIFT): Define. * target.def (TARGET_ASAN_SHADOW_OFFSET): New hook. * doc/tm.texi.in (TARGET_ASAN_SHADOW_OFFSET): Add it. * doc/tm.texi: Regenerated. * Makefile.in (asan.o): Depend on $(TARGET_H). * config/i386/i386.c (ix86_asan_shadow_offset): New function. (TARGET_ASAN_SHADOW_OFFSET): Define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193433 138bc75d-0d04-0410-961f-82ee72b054a4
* Initial import of asan from the Google branchdodji2012-11-129-3/+469
| | | | | | | | | | | | | | | | | | | | | | | | | This patch imports the initial state of asan as it was in the Google branch. It provides basic infrastructure for asan to instrument memory accesses on the heap, at -O3. Note that it supports neither stack nor global variable protection. The rest of the patches of the set is intended to further improve this base. gcc/ChangeLog * Makefile.in: Add asan.c and its dependencies. * common.opt: Add -faddress-sanitizer option. * invoke.texi: Document the new flag. * passes.c: Add the asan pass. * toplev.c (compile_file): Call asan_finish_file. * asan.c: New file. * asan.h: New file. * tree-pass.h: Declare pass_asan. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193432 138bc75d-0d04-0410-961f-82ee72b054a4
* 2012-11-12 Tobias Burnus <burnus@net-b.de>burnus2012-11-125-1/+47
| | | | | | | | | | | | | | | | PR fortran/55272 * module.c (mio_array_spec): Correctly handle coarray scalars. 2012-11-12 Tobias Burnus <burnus@net-b.de> PR fortran/55272 * gfortran.dg/coarray_29_1.f90: New. * gfortran.dg/coarray_29_2.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193429 138bc75d-0d04-0410-961f-82ee72b054a4
* 2012-11-12 Tobias Burnus <burnus@net-b.de>burnus2012-11-122-1/+9
| | | | | | | | | * diagnostic.c (diagnostic_append_note): Also call va_end when inhibit_notes_p is true. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193428 138bc75d-0d04-0410-961f-82ee72b054a4
* Index declspecs.locations by ds_typedef rather than ds_thread.emsr2012-11-122-1/+6
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193426 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcse.c (struct bb_data): Add new fields, old_pressure, live_inamker2012-11-124-42/+203
| | | | | | | | | | | | | | | | and backup. (get_regno_pressure_class): Add prototype. (update_bb_reg_pressure): New. (should_hoist_expr_to_dom): Add new parameter from. Monitor the change of reg pressure and use it to drive hoisting. (hoist_code): Update LIVE and reg pressure information. (calculate_bb_reg_pressure): Initialize live_in and backup. * gcc.dg/hoist-register-pressure-3.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193425 138bc75d-0d04-0410-961f-82ee72b054a4
* * doc/md.texi (Standard Pattern Names For Generation): Fix swappedolegendo2012-11-122-1/+6
| | | | | | | | sine and cosine operands in the sincos description. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193424 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/53512olegendo2012-11-122-7/+11
| | | | | | | | * config/sh/sh.md (sincossf3): Fix swapped sin and cos operands. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193423 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2012-11-121-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193422 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc.target/sh/sh4a-fprun.c: Add test_sinf and test_cosf noinlineolegendo2012-11-112-5/+28
| | | | | | | | wrappers around sinf and cosf. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193419 138bc75d-0d04-0410-961f-82ee72b054a4
* Remove "!" from riF->o alternativehjl2012-11-112-1/+6
| | | | | | | | * config/i386/i386.md (*movti_internal_rex64): Remove "!" from riF->o alternative. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193418 138bc75d-0d04-0410-961f-82ee72b054a4
* * config/sparc/sparc.h (AS_NIAGARA3_FLAG): Tweak.ebotcazou2012-11-113-5/+10
| | | | | | | * config/sparc/sol2.h (TARGET_CPU_niagara4 support): Fix pasto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193416 138bc75d-0d04-0410-961f-82ee72b054a4
* PR rtl-optimization/55247ebotcazou2012-11-115-3/+81
| | | | | | | | | | PR middle-end/55259 * emit-rtl.c (adjust_address_1): If POINTERS_EXTEND_UNSIGNED > 0, handle ZERO_EXTEND. * recog.c (offsettable_address_addr_space_p): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193415 138bc75d-0d04-0410-961f-82ee72b054a4
* * doc/xml/chapter.txml: Remove whitespace inside <keyword>.schwab2012-11-1148-393/+179
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/xml/class.txml: Likewise. * doc/xml/manual/abi.xml: Likewise. * doc/xml/manual/algorithms.xml: Likewise. * doc/xml/manual/allocator.xml: Likewise. * doc/xml/manual/appendix_contributing.xml: Likewise. * doc/xml/manual/appendix_free.xml: Likewise. * doc/xml/manual/appendix_porting.xml: Likewise. * doc/xml/manual/atomics.xml: Likewise. * doc/xml/manual/auto_ptr.xml: Likewise. * doc/xml/manual/backwards_compatibility.xml: Likewise. * doc/xml/manual/bitmap_allocator.xml: Likewise. * doc/xml/manual/build_hacking.xml: Likewise. * doc/xml/manual/codecvt.xml: Likewise. * doc/xml/manual/concurrency.xml: Likewise. * doc/xml/manual/concurrency_extensions.xml: Likewise. * doc/xml/manual/configure.xml: Likewise. * doc/xml/manual/containers.xml: Likewise. * doc/xml/manual/ctype.xml: Likewise. * doc/xml/manual/debug.xml: Likewise. * doc/xml/manual/debug_mode.xml: Likewise. * doc/xml/manual/diagnostics.xml: Likewise. * doc/xml/manual/extensions.xml: Likewise. * doc/xml/manual/internals.xml: Likewise. * doc/xml/manual/intro.xml: Likewise. * doc/xml/manual/io.xml: Likewise. * doc/xml/manual/iterators.xml: Likewise. * doc/xml/manual/locale.xml: Likewise. * doc/xml/manual/localization.xml: Likewise. * doc/xml/manual/messages.xml: Likewise. * doc/xml/manual/mt_allocator.xml: Likewise. * doc/xml/manual/numerics.xml: Likewise. * doc/xml/manual/parallel_mode.xml: Likewise. * doc/xml/manual/policy_data_structures.xml: Likewise. * doc/xml/manual/prerequisites.xml: Likewise. * doc/xml/manual/profile_mode.xml: Likewise. * doc/xml/manual/shared_ptr.xml: Likewise. * doc/xml/manual/status_cxx1998.xml: Likewise. * doc/xml/manual/status_cxx2011.xml: Likewise. * doc/xml/manual/status_cxxtr1.xml: Likewise. * doc/xml/manual/status_cxxtr24733.xml: Likewise. * doc/xml/manual/strings.xml: Likewise. * doc/xml/manual/support.xml: Likewise. * doc/xml/manual/test.xml: Likewise. * doc/xml/manual/using_exceptions.xml: Likewise. * doc/xml/manual/utilities.xml: Likewise. * doc/xml/spine.xml: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193414 138bc75d-0d04-0410-961f-82ee72b054a4
* * acinclude.m4 (GLIBCXX_CONFIGURE_DOCBOOK): Also check forschwab2012-11-113-0/+14
| | | | | | | | /usr/share/xml/docbook/stylesheet/nwalsh5/current. * configure: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193413 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/steven2012-11-114-2/+82
| | | | | | | | | | | | | | PR middle-end/55263 * postreload.c (rest_of_handle_postreload): With non-call exceptions, if edges are purged call cleanup_cfg to remove unreachable blocks. testsuite/ PR middle-end/55263 * g++.dg/pr55263.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193412 138bc75d-0d04-0410-961f-82ee72b054a4
* 2012-11-11 Sandra Loosemore <sandra@codesourcery.com>sandra2012-11-112-25/+38
| | | | | | | | | | gcc/ * doc/extend.texi: Copy-edit to use "built-in function" instead of "builtin", per GCC coding standards. Also use consistent capitalization in titles of sections describing built-in functions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193411 138bc75d-0d04-0410-961f-82ee72b054a4
* PR tree-optimization/55238hubicka2012-11-114-17/+94
| | | | | | | | | | | | * ipa-cp.c (agg_pass_through_permissible_p): New function. (propagate_aggs_accross_jump_function): Use it. (find_aggregate_values_for_callers_subset): Likewise and relax an assert. * testsuite/gcc.dg/torture/pr55238.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193410 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/47440uros2012-11-112-34/+54
| | | | | | | | | | | | | | | | * config/i386/i386.c (check_avx256_stores): Remove. (ix86_check_avx256_register): New. (ix86_avx_u128_mode_needed): Use ix86_check_avx256_register. Check the whole RTX for 256bit registers using for_each_rtx. (ix86_check_avx_stores): New. (ix86_avx_u128_mode_after): Change mode of CALL RTX to AVX_U128_CLEAN if there are no 256bit registers used in the function return register. (ix86_avx_u128_mode_entry): Use ix86_check_avx256_register. (ix86_avx_u128_mode_exit): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193409 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc.dg/torture/pr54920.c: Add "-fno-common" option on hppa*-*-hpux*.danglin2012-11-114-0/+9
| | | | | | | | | * c-c++-common/torture/vector-subscript-1.c: Likewise. * c-c++-common/torture/vector-subscript-2.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193408 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc.dg/tree-ssa/cunroll-1.c: Fix bogus testcase.hubicka2012-11-112-1/+5
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193407 138bc75d-0d04-0410-961f-82ee72b054a4
* PR middle-end/48636hubicka2012-11-114-18/+141
| | | | | | | | | | | | | | | | | | * ipa-inline.c (want_inline_small_function_p): Take aray index hint. (edge_badness): Likewise. * ipa-inline.h (inline_hints_vals): Add array_index and comments. (inline_summary_: Add ARRAY_INDEX. * ipa-inline-analysis.c (dump_inline_hints): Dump array_index hint. (reset_inline_summary): Handle array_index hint. (inline_node_duplication_hook): Likewise. (dump_inline_summary): Likewise. (array_index_predicate): New function. (estimate_function_body_sizes): Use it. (estimate_node_size_and_time): Use array_index hint. (inline_merge_summary, inline_read_section): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193406 138bc75d-0d04-0410-961f-82ee72b054a4
* * doc/xml/manual/policy_data_structures.xml: Update referencegerald2012-11-112-1/+6
| | | | | | | for select. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193405 138bc75d-0d04-0410-961f-82ee72b054a4
* 2012-11-10 Sandra Loosemore <sandra@codesourcery.com>sandra2012-11-112-28/+33
| | | | | | | | | gcc/ * doc/extend.texi: Copy-edit to use "bit-field" consistently instead of "bitfield" or "bit field". git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193403 138bc75d-0d04-0410-961f-82ee72b054a4
* 2012-11-10 Sandra Loosemore <sandra@codesourcery.com>sandra2012-11-112-67/+73
| | | | | | | | | | gcc/ * doc/extend.texi: Copy-edit to fix incorrect hyphenation phrases involving "bit", "byte", "word", "precision", and "floating" modifiers. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193402 138bc75d-0d04-0410-961f-82ee72b054a4
* * cp-demangle.c (d_unqualified_name): Handle abi tags here.jason2012-11-113-22/+24
| | | | | | (d_name): Not here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193401 138bc75d-0d04-0410-961f-82ee72b054a4
* 2012-11-10 Sandra Loosemore <sandra@codesourcery.com>sandra2012-11-112-83/+89
| | | | | | | | | gcc/ * doc/extend.texi: Copy-edit to fix incorrect uses of "which" and "that" throughout the file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193400 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2012-11-111-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193399 138bc75d-0d04-0410-961f-82ee72b054a4
* reflect: Fix bug comparing struct field types.ian2012-11-101-3/+14
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193395 138bc75d-0d04-0410-961f-82ee72b054a4
* Compile pr55247.c with -mno-sse -mno-mmxhjl2012-11-102-9/+11
| | | | | | | | * gcc.target/i386/pr55247.c: Require maybe_x32 target. Add -mno-sse -mno-mmx to dg-options. Reformat. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193394 138bc75d-0d04-0410-961f-82ee72b054a4
* 2012-11-10 Andrew Pinski <apinski@cavium.com>pinskia2012-11-103-0/+19
| | | | | | | | | | | PR bootstrap/55202 * configure.ac: Set PLUGIN_LD_SUFFIX to just "ld" if it was "ld-new" or "collect-ld". * configure: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193393 138bc75d-0d04-0410-961f-82ee72b054a4
* * many: Replace uses of __GXX_EXPERIMENTAL_CXX0X__ with __cplusplus.jason2012-11-10174-843/+846
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193392 138bc75d-0d04-0410-961f-82ee72b054a4
* * expr.c (store_field): Remove TYPE parameter. Remove block of codeebotcazou2012-11-102-83/+53
| | | | | | | | | | | | | | dealing with BLKmode in registers. Reimplement this support using pseudo-registers and bit-field techniques. (store_constructor_field): Remove TYPE parameter and adjust calls to store_field. (expand_assignment): Adjust calls to store_field. Add comment. (store_expr): Add comment. (store_constructor): Adjust calls to store_constructor_field. (expand_expr_real_2): Adjust call to store_field. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193391 138bc75d-0d04-0410-961f-82ee72b054a4
* * g++.dg/other/unused1.C: Skip on AIX.dje2012-11-103-2/+7
| | | | | | | | * g++.dg/other/anon5.C: Allow Undefined to be capitalized. Ignore extra message on AIX. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193390 138bc75d-0d04-0410-961f-82ee72b054a4
* * c-c++-common/scal-to-vec2.c: Ignore non-standard ABI message.dje2012-11-104-0/+12
| | | | | | | | * c-c++-common/vector-compare-1.c: Same. * c-c++-common/vector-compare-2.c: Same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193389 138bc75d-0d04-0410-961f-82ee72b054a4
* PR target/55247uros2012-11-104-7/+56
| | | | | | | | | | | | | | * config/i386/i386.md (*movti_internal_rex64): Add "!" to riF->o alternative. testsuite/ChangeLog: PR target/55247 * gcc.target/i386/pr55247.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193388 138bc75d-0d04-0410-961f-82ee72b054a4
* 2012-11-09 Andrew Pinski <apinski@cavium.com>pinskia2012-11-102-0/+55
| | | | | | | | * gcc.c-torture/execute/20121108-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193386 138bc75d-0d04-0410-961f-82ee72b054a4
* Daily bump.gccadmin2012-11-101-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193385 138bc75d-0d04-0410-961f-82ee72b054a4
* Implement a flag -fext-numeric-literals that allows control of whether GNUemsr2012-11-1016-59/+605
| | | | | | | numeric suffix extensions are parsed or passed to C++ as user-defined literals. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193382 138bc75d-0d04-0410-961f-82ee72b054a4
* * doc/install.texi (sparc64-x-solaris2): Mention MPC as well.ebotcazou2012-11-092-3/+7
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193377 138bc75d-0d04-0410-961f-82ee72b054a4
* PR other/52438ebotcazou2012-11-095-166/+43
| | | | | | | | | | * s-taspri-lynxos.ads: Delete. * s-osinte-kfreebsd-gnu.ads: Change license to GPL V3+. * s-tpopsp-rtems.adb: Likewise. * s-osinte-rtems.adb: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193375 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc.dg/Warray-bounds-3.c (bar): Keep array access withinlaw2012-11-094-8/+17
| | | | | | | | | bounds for ABDAY, DAY, ABMON, MON, AM_PM. * gcc.dg/vect/pr22506.c (foo): Reduce loop iterations to within array bounds. * gcc.dg/vect/pr34005.c (XdmcpUnwrap): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193373 138bc75d-0d04-0410-961f-82ee72b054a4
* + * g++.dg/tm/pr47530-2.C: Adjust for uninstrumented code path.aldyh2012-11-093-3/+13
| | | | | | + * g++.dg/tm/pr47530.C: Same. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193372 138bc75d-0d04-0410-961f-82ee72b054a4