* config/i386/i386.md (xop_sha<mode>3): Rename from xop_ashl<mode>3.
Update all uses.
(xop_shl<mode>3): Rename from xop_lshl<mode>3. Update all uses.
* config/i386/i386.c: Update all uses.
From-SVN: r180659
PR target/50691
config/pa/pa.c (emit_move_sequence): Legitimize TLS symbol references.
(pa_legitimate_constant_p): Return false for TLS_MODEL_GLOBAL_DYNAMIC
and TLS_MODEL_LOCAL_DYNAMIC symbol references.
From-SVN: r180655
PR target/50887
* config/avr/avr.opt (-maccumulate-args): New option.
* config/avr/avr.h (STARTING_FRAME_OFFSET): Redefine to
avr_starting_frame_offset.
(ACCUMULATE_OUTGOING_ARGS): Define to avr_accumulate_outgoing_args.
* config/avr/avr.md (UNSPECV_WRITE_SP_IRQ_ON): Remove.
(UNSPECV_WRITE_SP_IRQ_OFF): Remove.
(UNSPECV_WRITE_SP): New constant.
(*addhi3_sp_R): Rewrite to...
(*addhi3_sp): ...this new insn.
(movhi_sp_r_irq_off, movhi_sp_r_irq_on): Combine to...
(movhi_sp_r): ...this new insn.
* config/avr/avr-protos.h (avr_accumulate_outgoing_args): New.
(avr_starting_frame_offset): New.
* config/avr/avr.c (avr_accumulate_outgoing_args): New function.
(avr_starting_frame_offset): New function.
(avr_outgoing_args_size): New static function.
(avr_initial_elimination_offset): Use it.
(avr_simple_epilogue): Use it.
(avr_asm_function_end_prologue): Use it.
(expand_epilogue): Use it.
(expand_prologue): Use it. Break out code to...
(avr_prologue_setup_frame): ...this new static function.
(avr_can_eliminate): Allow eliminating to frame pointer if there
is one.
(avr_frame_pointer_required_p): Use frame pointer if target has a
nonlocal label.
* config/avr/constraints.md (R): Remove.
(Csp): New constraint.
* config/avr/predicates.md (avr_sp_immediate_operand): Use it.
From-SVN: r180654
gcc/objc:
PR target/47997
* objc-act.c (objc_build_string_object): Remove redundant second
call to fix_string_type (). Add a checking assert that we are,
indeed, passed a STRING_CST.
From-SVN: r180653
Jakub had some concerns about the performance of page alignments in
ggc-page, which use a hardware division instructions currently.
This patch changes them all to use a new PAGE_ALIGN macro, which
exploits that pages are a power of two.
gcc/:
2011-10-21 Andi Kleen <ak@linux.intel.com>
* ggc-page (PAGE_ALIGN): Add.
(alloc_page, ggc_pch_total_size, ggc_pch_this_base, ggc_pch_read):
Replace ROUND_UP with PAGE_ALIGN.
From-SVN: r180650
There were some concerns that the earlier munmap patch could lead
to address space being freed that cannot be allocated again
by ggc due to fragmentation. This patch adds a fragmentation
fallback to solve this: when a GGC_QUIRE_SIZE sized allocation fails,
try again with a page sized allocation.
Passes bootstrap and testing on x86_64-linux with the fallback
forced artificially.
v2: fix missed initialization bug added in last minute edit.
gcc/:
2011-10-20 Andi Kleen <ak@linux.intel.com>
* ggc-page (alloc_anon): Add check argument.
(alloc_page): Add fallback to 1 page allocation.
Adjust alloc_anon calls to new argument.
From-SVN: r180649
This implements the freeing back of large chunks in the ggc madvise path
Richard Guenther asked for. This way on systems with limited
address space malloc() and other allocators still have
a chance to get back at some of the memory ggc freed. The
fragmented pages are still just given back, but the address space
stays allocated.
I tried freeing only aligned 2MB areas to optimize for 2MB huge
pages, but the hit rate was quite low, so I switched to 1MB+
unaligned areas.
v2: Hardcode free unit size instead of param
gcc/:
2011-10-18 Andi Kleen <ak@linux.intel.com>
* ggc-page (release_pages): First free large continuous
chunks in the madvise path.
From-SVN: r180648
This one place in ggc forgot to round page_entry->bytes to the
next page boundary, which lead to all the heuristics in freeing to
check for continuous memory failing. Round here too, like all other
allocators already do. The memory consumed should be the same
for MMAP because the kernel would round anyways. It may slightly
increase memory usage when malloc groups are used.
This will also increase the hitrate on the free page list
slightly.
gcc/:
2011-10-18 Andi Kleen <ak@linux.intel.com>
* ggc-page.c (alloc_pages): Always round up to entry_size.
From-SVN: r180647
* config/i386/morestack.S: Correct CFI information to do proper
returns throughout function. In 32-bit mode, save %ebx so that it
is restored on unwind.
From-SVN: r180633
PR target/49313
* config/avr/avr.md (parityhi2): Expand allowing pseudos.
(*parityhi2): New pre-reload insn-and-split to map 16-bit parity
to the libgcc insn.
(*parityqihi2): Same for 8-bit parity.
From-SVN: r180620
2011-10-28 Steven G. Kargl <kargl@gcc.gnu.org>
* check.c (gfc_check_atan_2): Typo in comment.
(gfc_check_nearest): If 's' is constant, check that it is not 0.
* simplify.c (simplify_dshift, gfc_simplify_ibclr, gfc_simplify_ibits,
gfc_simplify_ibset, simplify_shift, gfc_simplify_ishftc,
gfc_simplify_nearest): Remove dead code.
2011-10-28 Steven G. Kargl <kargl@gcc.gnu.org>
* gfortran.dg/nearest_5.f90: New test.
From-SVN: r180618
ada:
PR target/50678
* init.c (Darwin/__gnat_error_handler): Apply a work-around to the
bug [filed as radar #10302855], which is inconsistent unwind data
for sigtramp.
Co-Authored-By: Eric Botcazou <ebotcazou@adacore.com>
From-SVN: r180613
PR rtl-optimization/47918
* reload1.c (set_initial_label_offsets): Use initial offsets
for labels on the nonlocal_goto_handler_labels chain.
From-SVN: r180611
gcc:
* config/rs6000/t-darwin (LIB2FUNCS_STATIC_EXTRA):
Move darwin-fpsave.asm from here to ... LIB2FUNCS_EXTRA.
(LIB2FUNCS_EXTRA): Add darwin-gpsave.asm.
(TARGET_LIBGCC2_CFLAGS): Ensure that fPIC and -pipe are inherited from
config/t-darwin.
* config/rs6000/darwin.h (FP_SAVE_INLINE): Adjust to enable.
(GP_SAVE_INLINE): Likewise.
(SAVE_FP_PREFIX, SAVE_FP_SUFFIX, RESTORE_FP_PREFIX,
RESTORE_FP_SUFFIX): Set to empty strings.
* config/rs6000/rs6000.c (rs6000_savres_strategy): Implement for Darwin.
(debug_stack_info): Print savres_strategy.
(rs6000_savres_routine_name): Implement for Darwin.
(rs6000_make_savres_rtx): Adjust used register for Darwin.
(rs6000_emit_prologue): Implement out-of-line saves for Darwin.
(rs6000_output_function_prologue): Don't emit .extern for Mach-O.
(rs6000_emit_epilogue): Implement out-of-line saves for Darwin.
* config/rs6000/darwin-gpsave.asm: New file.
From-SVN: r180610
* config/i386/sse.md (VI4SD_AVX2): Removed.
(VI48_AVX2, VI128_128, VI48_128, VI48_256): New mode iterators.
(vashl<mode>3): Use VI12_128 iterator instead of VI124_128.
Add another expander using VI48_128 iterator for
TARGET_AVX2 || TARGET_XOP and another using VI48_256 iterator
for TARGET_AVX2.
(vlshr<mode>3): Likewise. Change register_operand predicate to
nonimmediate_operand on last operand in the VI12_128 expander.
(vashr<mode>3): Use VI128_128 iterator instead of VI124_128.
(vashrv4si3, vashrv8si3): New expanders.
(avx2_ashrvv8si, avx2_ashrvv4si, avx2_<lshift>vv8si,
avx2_<lshift>vv2di): Removed.
(avx2_ashrv<mode>): New insn with VI4_AVX2 iterator.
(avx2_<lshift>v<mode>): Macroize using VI48_AVX2
iterator. Simplify pattern.
* gcc.dg/vshift-1.c: New test.
* gcc.dg/vshift-2.c: New test.
* gcc.target/i386/xop-vshift-1.c: New test.
* gcc.target/i386/xop-vshift-2.c: New test.
* gcc.target/i386/avx2-vshift-1.c: New test.
From-SVN: r180609
2010-10-28 Richard Guenther <rguenther@suse.de>
PR driver/50876
* lto-wrapper.c (get_options_from_collect_gcc_options):
Properly count arguments.
(run_gcc): Use an obstack to collect argv, properly separate
switches and their arguments.
From-SVN: r180608
2011-10-28 Richard B. Kreckel <kreckel@ginac.de>
* include/std/complex (__complex_acosh): Just use '< _Tp()'.
* include/tr1/complex (__complex_acosh): Likewise.
From-SVN: r180607
gcc/
* config/sparc/sparc.md (snedi_special): Only match when not VIS3.
(*snedi_zero): Likewise.
(*snedi_zero_trunc): Likewise.
(snedi_special_vis3): New expander.
(*snedi_zero_vis3): New insn.
(*snedi_zero_trunc_vis3): Likewise.
(*sltu_insn_vis3): Likewise.
(*sltu_insn_vis3_trunc): Likewise.
(addxc): Likewise.
(*addxc_trunc_sp64_vis3): Likewise.
* config/sparc/sparc.c (emit_scc_insn): When VIS3 use the
gen_snedi_special_vis3 expander, and try GTU/LTU addx based
sequences on DImode values.
gcc/testsuite/
* gcc.target/sparc/setcc-3.c: New test.
From-SVN: r180602
* config/i386/sse.md (avx_cvtpd2dq256_2, avx_cvttpd2dq256_2,
vec_pack_sfix_trunc_v4df, vec_pack_sfix_v4df): New expanders.
(*avx_cvtpd2dq256_2, *avx_cvttpd2dq256_2): New insns.
* gcc.target/i386/sse2-cvt-1.c: New test.
* gcc.target/i386/sse2-cvt-2.c: New test.
* gcc.target/i386/avx-cvt-1.c: New test.
* gcc.target/i386/avx-cvt-2.c: New test.
* gcc.target/i386/avx2-cvt-1.c: New test.
* gcc.target/i386/avx2-cvt-2.c: New test.
From-SVN: r180580
* config/i386/i386.c (ix86_print_operand): Handle 'q' and 'x'
overrides for -masm=intel memory.
* config/i386/sse.md (sse2_cvtdq2pd, sse2_cvtps2pd,
sse4_1_<code>v8qiv8hi2, avx2_<code>v8qiv8si2,
sse4_1_<code>v4hiv4si2, avx2_<code>v4hiv4di2,
sse4_1_<code>v2siv2di2): Use %q1 instead of %1 for -masm=intel.
(sse4_1_<code>v4qiv4si2, avx2_<code>v4qiv4di2,
sse4_1_<code>v2hiv2di2): Use %k1 instead of %1 for -masm=intel.
(sse4_1_<code>v2qiv2di2): Use %w1 instead of %1 for -masm=intel.
From-SVN: r180579