Age | Commit message (Collapse) | Author |
|
* configure.in: Regenerate.
* Makefile.def: Change libasan module to libsanitizer.
* Makefile.in: Regenerate.
* libsanitizer: Change libasan to libsanitizer and add
an empty tsan directory under libsanitizer.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/asan@193074 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* configure.ac: Add libasan to target_libraries
* Makefile.def: Ditto
* configure: Regenerate
* Makefile.in: Regenerate
* libasan: New directory for asan runtime
gcc:
2012-10-29 Wei Mi <wmi@google.com>
* gcc.c (LINK_COMMAND_SPEC): Add -lasan to link command
if -fasan is on.
libasan:
2012-10-29 Wei Mi <wmi@google.com>
Initial checkin: migrate asan runtime from llvm.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/asan@192977 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/asan@192864 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* testsute/ChangeLog: Ditto.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192856 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
Clear only fxsave.mxcsr_mask. Use saved mxcsr from fxsave structure
when appropriate. Correct structure element types.
* config/i386/t-crtfm (crtfastmath.o): Compile with -mfxsr, remove
-minline-all-stringops from compile flags.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192855 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
Uncovered by Uros Bizjak.
Before this patch the test would close the file descriptor but
not the os.File. When the os.File was GC'ed, the finalizer
would close the file descriptor again. That would cause
problems if the same file descriptor were returned by a later
call to open in another test.
On my system:
> GOGC=30 go test
--- FAIL: TestPassFD (0.04 seconds)
passfd_test.go:62: FileConn: dup: bad file descriptor
FAIL
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192854 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* configure.ac: Check for _Unwind_GetIPInfo function declaration.
* configure: Regenerate.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192853 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192852 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* common/config/m68k/m68k-common.c (m68k_handle_option): Set
gcc_options fields of opts_set for -m68020-40 and -m68020-60.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192851 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
when the def feeds another extend with a different mode. This works because
in merge_def_and_ext only calls combine_set_extension if the candidate for
removal has a wider mode than the def extend's mode, otherwise the def extend
mode is preserved. In combine_set_extension the def is modified to use the
wider candidate's mode.
2012-10-26 Teresa Johnson <tejohnson@google.com>
* ree.c (add_removable_extension): Remove unnecessary
mode check with other extension.
* testsuite/gcc.c-torture/execute/20111227-2.c: New test.
* testsuite/gcc.c-torture/execute/20111227-3.c: Ditto.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192850 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
for !DECL_EXTERNAL.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192849 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
PR debug/54971
* tree-sra.c (struct access): New flag grp_to_be_debug_replaced.
(dump_access): Dump the new flag.
(analyze_access_subtree): Set the new flag when appropriate.
(create_access_replacement): Handle debug replacements differently.
(generate_subtree_copies): Handle the grp_to_be_debug_replaced flag.
(init_subtree_with_zero): Likewise.
(sra_modify_expr): Likewise.
(load_assign_lhs_subreplacements): Likewise.
(sra_modify_assign): Likewise.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192848 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
2012-10-26 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/54984
* init.c (build_new): Don't turn a null *init into a pointer to
empty vector orig_init.
/testsuite
2012-10-26 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/54984
* g++.dg/template/new11.C: New.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192846 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
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/
* asan.c (insert_if_then_before_iter, instrument_mem_region_access,
(instrument_strlen_call, maybe_instrument_builtin_call,
(maybe_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: https://gcc.gnu.org/svn/gcc/branches/asan@192845 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
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: https://gcc.gnu.org/svn/gcc/branches/asan@192844 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
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: https://gcc.gnu.org/svn/gcc/branches/asan@192843 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
instruction.
(ix86_dependencies_evaluation_hook): Insert dependencies in all
predecessors of call block for non-trivial region avoiding creation
of loop-carried dependency to avoid cross-block motion of HW registers.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192842 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
PR middle-end/54824
* tree-optimize.c (execute_fixup_cfg): Insert __builtin_unreachable
at the end of blocks with no successors.
* gcc.dg/torture/pr54824.c: New testcase.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192841 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* gcc/common/config/i386/i386-common.c
(OPTION_MASK_ISA_FXSR_SET): New.
(OPTION_MASK_ISA_XSAVE_SET): Likewise.
(OPTION_MASK_ISA_XSAVEOPT_SET): Likewise.
(ix86_handle_option): Handle mfxsr, mxsave, mxsaveopt options.
* gcc/config.gcc (i[34567]86-*-*): Add fxsrintrin.h,
xsaveintrin.h, xsaveoptintrin.h.
(x86_64-*-*): Likewise.
* config/i386/fxsrintrin.h: New header.
* config/i386/xsaveintrin.h: Likewise.
* config/i386/xsaveoptintrin.h: Likewise.
* gcc/config/i386/driver-i386.c (host_detect_local_cpu): Detect
FXSR/XSAVE/XSAVEOPT support.
* gcc/config/i386/i386-builtin-types.def
(VOID_FTYPE_PVOID_INT64): New function type.
* gcc/config/i386/i386-c.c: Define __FXSR__, __XSAVE__
and __XSAVEOPT__ if needed.
* gcc/config/i386/i386.c (ix86_target_string): Define -mfxsr,
-mxsave and -mxsaveopt options.
(PTA_FXSR): New.
(PTA_XSAVE): Likewise.
(PTA_XSAVEOPT): Likewise.
(ix86_option_override_internal): Handle new option.
(processor_alias_table): Added PTA_FXSR, PTA_XSAVE, PTA_XSAVEOPT.
(ix86_valid_target_attribute_inner_p): Add OPT_mfxsr,
OPT_mxsave, OPT_mxsaveopt.
(ix86_builtins): Add IX86_BUILTIN_FXSAVE, IX86_BUILTIN_FXRSTOR,
IX86_BUILTIN_FXSAVE64, IX86_BUILTIN_XSAVE, IX86_BUILTIN_XSAVE64,
IX86_BUILTIN_XRSTOR, IX86_BUILTIN_XRSTOR64, IX86_BUILTIN_XSAVEOPT,
IX86_BUILTIN_XSAVEOPT64.
(ix86_expand_builtin): Handle these built-ins.
* gcc/config/i386/i386.h (TARGET_FXSR): New.
(TARGET_XSAVE): Likewise.
(TARGET_XSAVEOPT): Likewise.
* gcc/config/i386/i386.md (ANY_XSAVE): New int iterator.
(ANY_XSAVE64): Likewise.
(xsave): New int attribute.
(fxsave): New instruction.
(fxsave64): Likewise.
(fxrstor): Likewise.
(fxrstor64): Likewise.
(<xsave>): Likewise.
(<xsave>_rex64): Likewise.
(xrstor): Likewise.
(xrstor_rex64): Likewise.
(xrstor64): Likewise.
* gcc/config/i386/i386.opt (mfxsr): New.
(mxsave): Likewise.
(mxsaveopt): Likewise.
* gcc/config/i386/x86intrin.h: Include
xsaveintrin.h, fxsrintrin.h, xsaveoptintrin.h.
testsuite/ChangeLog
* gcc.target/i386/fxsave-1.c: New.
* gcc.target/i386/fxsave64-1.c: Ditto.
* gcc.target/i386/fxrstor-1.c: Ditto.
* gcc.target/i386/fxrstor64-1.c: Ditto.
* gcc.target/i386/xsave-1.c: Ditto.
* gcc.target/i386/xsave64-1.c: Ditto.
* gcc.target/i386/xrstor-1.c: Ditto.
* gcc.target/i386/xrstor64-1.c: Ditto.
* gcc.target/i386/xsaveopt-1.c: Ditto.
* gcc.target/i386/xsaveopt64-1.c: Ditto.
* gcc.target/i386/sse-12.c: Add -mfxsr, -mxsaveopt.
* gcc.target/i386/sse-13.c: Ditto.
* gcc.target/i386/sse-14.c: Ditto.
* gcc.target/i386/sse-22.c: Ditto.
* gcc.target/i386/sse-23.c: Ditto.
* g++.dg/other/i386-2.C: Ditto.
* g++.dg/other/i386-3.C: Ditto.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192840 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* config/avr/t-rtems: Revert previous commit.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192838 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
PR bootstrap/55049
* Makefile.in (rtlanal.o): Add dependency on addresses.h.
* rtl.h (address_info): New structure.
(strip_address_mutations, decompose_address, decompose_lea_address)
(decompose_mem_address, update_address, get_index_scale)
(get_index_code): Declare.
* rtlanal.c: Include addresses.h.
(strip_address_mutations, must_be_base_p, must_be_index_p)
(set_address_segment, set_address_base, set_address_index)
(set_address_disp, decompose_incdec_address, decompose_automod_address)
(extract_plus_operands, baseness, decompose_normal_address)
(decompose_address, decompose_lea_address, decompose_mem_address)
(update_address, get_index_scale, get_index_code): New functions.
* lra-constraints.c (strip_subreg): New function.
(address, extract_loc_address_regs, extract_address_regs)
(get_index_scale): Delete.
(process_addr_reg): Apply strip_subreg to the location.
(uses_hard_regs_p): Use decompose_mem_address.
(valid_address_p, base_plus_disp_to_reg, can_add_disp_p)
(equiv_address_substitution): Take an address_info rather
than an address. Remove other arguments. Avoid using Pmode.
(process_address): Use decompose_mem_address and decompose_lea_address.
Update calls to above functions.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192837 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* lra-constraints.c (process_address): Tighten arguments to
base_reg_class. Use simplify_gen_binary to generate PLUS rtxes.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192836 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* lra-constraints.c (get_index_scale, can_add_disp_p): New functions.
(equiv_address_substitution): Use them.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192835 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* lra-constraints.c (valid_address_p): New function, split out from...
(process_address): ...here.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192834 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* lra-constraints.c (process_address): Describe the kinds of address
that we might see.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192833 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* lra-int.h (lra_assert): Redefine it gcc_checking_assert.
* lra-constraints.c (check_and_process_move): Remove #if
ENABLE_ASSERT_CHECKING.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192832 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
for decls that are already ASAN_RED_ZONE_SIZE or more
bytes aligned.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/asan@192830 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* config/avr/rtems.h (TARGET_OS_CPP_BUILTINS): Remove
__USE_INIT_FINI__.
* config/avr/t-rtems (LIB1ASMFUNCS): Filter out _exit.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192828 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192827 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* config/sparc/constraints.md ("U"): Delete.
* config/sparc/sparc.md: Use 'r' constraint instead of 'U'.
* config/sparc/sync.md: Likewise.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192824 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
value type stored in the hash table. The 'find' functions now may
take a different type from the value type. This requires introducing
a second typedef into the Descriptor conceptual type. Change the
Descriptor concept to use typedefs value_type and compare_type instead
of T. Change all users to match.
Add usage documentation to hash-table.h.
Tested on x86-64.
Index: gcc/ChangeLog
2012-10-25 Lawrence Crowl <crowl@google.com>
* hash-table.h: Add usage documentation.
(template struct typed_free_remove): Clarify documentation.
Rename template parameter.
(struct typed_noop_remove): Likewise.
(descriptor concept): Change typedef T to value_type.
Add typedef compare_type. Use more precise template parameter name,
Descriptor instead of Descr. Update users to match.
(struct hash_table): Change 'find' parameters to use compare_type
instead of the value type.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192823 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
at ivcanon time.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192822 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
to direct call update the summary.
* ipa-inline-transform.c (inline_call): Sanity check that summaries
match the predicted effect; fix updating of summary after edge
redirection.
* ipa-inline-analysis.c (inline_node_duplication_hook): Do not try
to update the summary and recompute it instead.
(estimate_function_body_sizes): Fix self size estimation; double
check that it agrees with inline_update_overall_summary.
(estimate_edge_size_and_time): Handle devirtualizaiton costs.
(estimate_edge_devirt_benefit): Update to be called from
estimate_edge_size_and_time.
(estimate_calls_size_and_time): Update.
(estimate_node_size_and_time): Watch overflows.
(inline_merge_summary): Likewise.
* ipa-prob.c: Include ipa-inline.h
(ipa_make_edge_direct_to_target): After redirection update the summary.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192821 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
PR debug/55063
* dwarf2out.c (prune_unused_types_prune): Check whether DIE is
already a declaration.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192820 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
From Rainer Orth.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192819 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* lra-assigns.c (assign_by_spills): Add non-reload pseudos
assigned to hard register to changed_pseudo_bitmap.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192817 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* config.gcc (microblaze*-*-rtems*): New target.
* config/microblaze/rtems.h: New.
* config/microblaze/t-rtems: New.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192815 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
2012-10-25 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/53761
* class.c (finish_struct_1): Reject aggregates decorated with
__transparent_union__ which cannot be made transparent because
the type of the first field has a different ABI from the class
overall.
/testsuite
2012-10-25 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/53761
* g++.dg/ext/transparent-union.C: New.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192814 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
cp/
* call.c (joust): An implicitly deleted move function is
worse than any non-deleted function.
* method.c (process_subob_fn): No special rules for move.
(synthesized_method_walk, implicitly_declare_fn): Likewise.
Warn about virtual base with non-trivial move assignment.
* cp-tree.h (struct lang_decl_fn): Remove suppress_implicit_decl.
(FNDECL_SUPPRESS_IMPLICIT_DECL): Remove.
c-family/
* c.opt (Wvirtual-move-assign): New.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192813 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192812 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* c.opt (Winherited-variadic-ctor): New.
cp/
* class.c (one_inherited_ctor): Warn about variadic inherited ctor.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192811 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192810 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* tree-ssa-loop-ivcanon.c (constant_after_peeling): Fix
obvious typo.
(loop_edge_to_cancel): Be sure that the edge is from an conditional
so we can cancel it.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192809 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
PR c++/54427
gcc/
* tree.c (signed_or_unsigned_type_for): Handle vectors.
gcc/cp/
* typeck.c (build_x_conditional_expr): Handle VEC_COND_EXPR.
* call.c (build_conditional_expr_1): Likewise.
gcc/c-family/
* c-common.c (scalar_to_vector): Handle VEC_COND_EXPR.
gcc/testsuite/
* g++.dg/ext/vector19.C: New testcase.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192808 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
clone before testing profitability.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192807 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* config.host (sh*-*-rtems*): Add sh*-*-elf*'s extra_parts.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192805 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
PR tree-optimization/54902
* tree-ssa-pre.c (fini_eliminate): Return TODO.
(do_pre): Adjust.
(execute_fre): Likewise.
* tree-ssa-tailmerge.c (tail_merge_optimize): Delete unreachable
blocks before computing dominators.
* g++.dg/torture/pr54902.C: New testcase.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192804 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
2012-10-25 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/34892
* parser.c (cp_parser_template_parameter): When
cp_parser_parameter_declaration parsed a default argument don't
see if *is_parameter_pack needs setting.
/testsuite
2012-10-25 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/34892
* g++.dg/template/crash114.C: New.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192802 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* expr.c (emit_block_move_via_loop): Use simplify_gen_binary
rather than gen_rtx_PLUS.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192801 138bc75d-0d04-0410-961f-82ee72b054a4
|
|
* config.host (sh*-*-rtems*): Add sh*-*-elf*'s extra_parts.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@192799 138bc75d-0d04-0410-961f-82ee72b054a4
|