110472 Commits

Author SHA1 Message Date
DJ Delorie
69135c94b3 expr.c (expand_expr_addr_expr_1): Detect a user request for a local frame in a naked function...
* expr.c (expand_expr_addr_expr_1): Detect a user request for a
local frame in a naked function, and produce a suitable error for
that specific case.

From-SVN: r176904
2011-07-28 18:26:23 -04:00
DJ Delorie
13a234421d m32c.c (m32c_secondary_reload_class): Allow PSI registers to be reloaded in HI classes when the target is HI.
* config/m32c/m32c.c (m32c_secondary_reload_class): Allow PSI
registers to be reloaded in HI classes when the target is HI.

From-SVN: r176903
2011-07-28 18:07:39 -04:00
Sebastian Pop
6c6c79a939 Replace v1, v2, lb, ub with bound_one, bound_two
2011-07-28  Sebastian Pop  <sebastian.pop@amd.com>

	* graphite-clast-to-gimple.c: Replace v1, v2, lb, ub with
	bound_one, bound_two.

From-SVN: r176902
2011-07-28 21:57:20 +00:00
Sebastian Pop
0c43dbaf55 Fix PR48648: Handle CLAST assignments.
The CLAST produced by CLooG-ISL contains an assignment and GCC chokes
on it.  The exact CLAST contains an assignment followed by an if:

scat_1 = max(0,ceild(T_4-7,8));
if (scat_1 <= min(1,floord(T_4-1,8))) {
  S7(scat_1);
}

This is equivalent to a loop that iterates only once, and so CLooG
generates an assignment followed by an if instead of a loop.  This is
an important optimization that was improved in ISL, that allows
if-conversion: imagine GCC having to figure out that a loop like the
following actually iterates only once, and can be converted to an if:

for (scat_1 = max(0,ceild(T_4-7,8)); scat_1 <= min(1,floord(T_4-1,8)); scat_1++)
  S7(scat_1);

This patch implements the translation of CLAST assignments.
Bootstrapped and tested on amd64-linux.

2011-07-28  Sebastian Pop  <sebastian.pop@amd.com>

	PR middle-end/48648
	* graphite-clast-to-gimple.c (clast_get_body_of_loop): Handle
	CLAST assignments.
	(translate_clast): Same.
	(translate_clast_assignment): New.

	* gcc.dg/graphite/id-pr48648.c: New.

From-SVN: r176901
2011-07-28 21:57:10 +00:00
Sebastian Pop
60cf26cce2 Fix PR49876: Continue code generation with integer_zero_node on gloog_error
When setting gloog_error, graphite should continue code generation
without early returns, as otherwise the SSA representation would not
be complete.  So set the new expression to integer_zero_node, that
would not require more SSA updates, and continue code generation as
nothing happened.

Regstrapped on amd64-linux.

2011-07-28  Sebastian Pop  <sebastian.pop@amd.com>

	PR tree-optimization/49876
	* sese.c (rename_uses): Do not return false on gloog_error: set
	the new_expr to integer_zero_node and continue code generation.
	(graphite_copy_stmts_from_block): Remove early exit on gloog_error.

From-SVN: r176900
2011-07-28 21:57:00 +00:00
Paolo Carlini
f715f0c186 re PR c++/49813 ([C++0x] sinh vs asinh vs constexpr)
2011-07-28  Paolo Carlini  <paolo.carlini@oracle.com>

        PR c++/49813
        * semantics.c (potential_constant_expression_1):  Handle FMA_EXPR.

	Checking this in for Paolo.

From-SVN: r176899
2011-07-28 20:59:11 +00:00
Gabriel Charette
0681d04c47 line-map.h (struct line_maps): Remove unused field last_listed.
* include/line-map.h (struct line_maps):
Remove unused field last_listed. Update all users.

From-SVN: r176898
2011-07-28 20:57:20 +00:00
Jakub Jelinek
d266391244 re PR fortran/31067 (MINLOC should sometimes be inlined (gas_dyn is sooooo sloooow))
PR fortran/31067
	* frontend-passes.c (optimize_minmaxloc): New function.
	(optimize_expr): Call it.

	* gfortran.dg/maxloc_2.f90: New test.
	* gfortran.dg/maxloc_3.f90: New test.
	* gfortran.dg/minloc_1.f90: New test.
	* gfortran.dg/minloc_2.f90: New test.
	* gfortran.dg/minloc_3.f90: New test.
	* gfortran.dg/minmaxloc_7.f90: New test.

From-SVN: r176897
2011-07-28 22:56:50 +02:00
H.J. Lu
5fce91262c Use long long for 64bit int.
2010-07-28  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/64/sfp-machine.h (_FP_W_TYPE): Always use _WIN64
	version.
	(_FP_WS_TYPE): Likewise.
	(_FP_I_TYPE): Likewise.

From-SVN: r176894
2011-07-28 13:36:39 -07:00
H.J. Lu
f53d712fa9 Check ia32 instead of ilp32 for ia32 tests.
2011-07-28  H.J. Lu  <hongjiu.lu@intel.com>

	* testsuite/lib/libgomp.exp (libgomp_init): Add -march=i486
	for ia32 instead of ilp32.

	* testsuite/libgomp.c/atomic-1.c: Require ia32 instead of ilp32.
	* testsuite/libgomp.c/atomic-6.c: Likewise.

From-SVN: r176893
2011-07-28 13:35:32 -07:00
Jakub Jelinek
4fe249e748 re PR debug/49846 (entryval: missing DW_TAG_GNU_call_site_parameter for stack-passed `double' parameter)
PR debug/49846
	* var-tracking.c (prepare_call_arguments): For non-MODE_INT stack
	arguments also check if they aren't initialized with a MODE_INT
	mode of the same size.

From-SVN: r176892
2011-07-28 22:35:12 +02:00
Aldy Hernandez
86f9864124 expr.c (get_bit_range): Handle *MEM_REF's.
* expr.c (get_bit_range): Handle *MEM_REF's.

From-SVN: r176891
2011-07-28 19:48:48 +00:00
Bernd Schmidt
dc0ff1c802 rtlanal.c (tablejump_p): False for returns.
* rtlanal.c (tablejump_p): False for returns.
	* reorg.c (first_active_target_insn): New static function.
	(find_end_label): Set JUMP_LABEL for a new returnjump.
	(optimize_skip, get_jump_flags, rare_destination,
	mostly_true_jump, get_branch_condition,
	steal_delay_list_from_target, own_thread_p,
	fill_simple_delay_slots, follow_jumps, fill_slots_from_thread,
	fill_eager_delay_slots, relax_delay_slots, make_return_insns,
	dbr_schedule): Adjust to handle ret_rtx in JUMP_LABELs.
	* jump.c (delete_related_insns): Likewise.
	(jump_to_label_p): New function.
	(redirect_target): New static function.
	(redirect_exp_1): Use it.  Adjust to handle ret_rtx in JUMP_LABELS.
	(redirect_jump_1): Assert that the new label is nonnull.
	(redirect_jump): Likewise.
	(redirect_jump_2): Check for ANY_RETURN_P rather than NULL labels.
	* ifcvt.c (find_if_case_1): Take care when redirecting jumps to the
	exit block.
	(dead_or_predicable): Change NEW_DEST arg to DEST_EDGE.  All callers
	changed.  Ensure that the right label is passed to redirect_jump.
	* function.c (emit_return_into_block,
	thread_prologue_and_epilogue_insns): Ensure new returnjumps have
	ret_rtx in their JUMP_LABEL.
	* print-rtl.c (print_rtx): Handle ret_rtx in a JUMP_LABEL.
	* emit-rtl.c (skip_consecutive_labels): Allow the caller to
	pass ret_rtx as label.
	* cfglayout.c (fixup_reorder_chain): Use
	force_nonfallthru_and_redirect rather than force_nonfallthru.
	(duplicate_insn_chain): Copy JUMP_LABELs for returns.
	* rtl.h (ANY_RETURN_P): New macro.
	(jump_to_label_p): Declare.
	* resource.c (find_dead_or_set_registers): Handle ret_rtx in
	JUMP_LABELs.
	(mark_target_live_regs): Likewise.
	* basic-block.h (force_nonfallthru_and_redirect): Declare.
	* cfgrtl.c (force_nonfallthru_and_redirect): No longer static.
	* config/alpha/alpha.c (alpha_tablejump_addr_vec,
	alpha_tablejump_best_label): Remove functions.
	* config/alpha/alpha-protos.c (alpha_tablejump_addr_vec,
	alpha_tablejump_best_label): Remove declarations.
	* config/sh/sh.c (barrier_align, split_branches): Adjust for
	ret_rtx in JUMP_LABELs.
	* config/arm/arm.c (is_jump_table): Likewise.

From-SVN: r176881
2011-07-28 18:45:20 +00:00
Uros Bizjak
a2e49bb27e predicates.md (pic_32bit_opreand): Do not define as special predicate.
* config/i386/predicates.md (pic_32bit_opreand): Do not define as
	special predicate.  Remove explicit mode checks.

From-SVN: r176879
2011-07-28 18:40:21 +02:00
Jakub Jelinek
b388214880 dwarf2out.c (resolve_addr): For -gdwarf-2 don't optimize DW_AT_data_member_location containing just...
* dwarf2out.c (resolve_addr): For -gdwarf-2 don't
	optimize DW_AT_data_member_location containing just
	DW_OP_plus_uconst.

From-SVN: r176878
2011-07-28 18:23:20 +02:00
Jakub Jelinek
64153cceb2 re PR debug/49871 (-gdwarf-3 creates invalid DWARF3 with DW_AT_data_member_location attribute)
PR debug/49871
	* dwarf2out.c (size_of_die, value_format, output_die): Use
	DW_FORM_udata instead of DW_FORM_data[48] for
	dw_val_class_unsigned_const DW_AT_data_member_location for DWARF 3.

	* gcc.dg/debug/dwarf2/pr49871.c: New test.

From-SVN: r176876
2011-07-28 18:21:08 +02:00
Uros Bizjak
844bf05b0d * ChangeLog: Remove mess.
From-SVN: r176874
2011-07-28 17:15:47 +02:00
H.J. Lu
0465f4f893 Update length attribute on *tls_global_dynamic_64.
2011-07-28  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.md (*tls_global_dynamic_64): Update length
	attribute.

From-SVN: r176873
2011-07-28 07:54:02 -07:00
Uros Bizjak
f51c4a8aab re PR target/47715 ([x32] TLS doesn't work)
PR target/47715
	* config/i386/i386.md (*tls_global_dynamic_64): Remove mode from
	tls_symbolic_operand check.  Update code sequence for TARGET_X32.
	(tls_global_dynamic_64): Remove mode from tls_symbolic_operand check.
	(tls_dynamic_gnu2_64): Ditto.
	(*tls_dynamic_gnu2_lea_64): Ditto.
	(*tls_dynamic_gnu2_call_64): Ditto.
	(*tls_dynamic_gnu2_combine_64): Ditto.

From-SVN: r176872
2011-07-28 16:42:45 +02:00
H.J. Lu
5e9627caa4 Set need_64bit_hwint to yes for x86 targets.
gcc/

2011-07-28  H.J. Lu  <hongjiu.lu@intel.com>

	* config.gcc: Set need_64bit_hwint to yes for x86 targets.

libcpp/

2011-07-28  H.J. Lu  <hongjiu.lu@intel.com>

	* configure.ac: Set need_64bit_hwint to yes for x86 targets.
	* configure: Regenerated.

From-SVN: r176871
2011-07-28 07:29:38 -07:00
Rainer Orth
6da2ca7d77 init.c (__gnat_error_handler): Cast reason to int.
* init.c (__gnat_error_handler): Cast reason to int.
	(__gnat_install_handler): Explain sa_sigaction use.

From-SVN: r176870
2011-07-28 13:40:51 +00:00
H.J. Lu
40b9321d84 Only expand strlen to Pmode.
2011-07-28  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/47364
	* config/i386/i386.md (strlen<mode>): Replace SWI48x with P.

From-SVN: r176868
2011-07-28 05:32:23 -07:00
Ramana Radhakrishnan
95f89bb3f8 vfp.md ("*movdf_vfp"): Handle the VFP constraints before the core constraints.
2011-07-28  Ramana Radhakrishnan  <ramana.radhakrishnan@linaro.org>

	* config/arm/vfp.md ("*movdf_vfp"): Handle the VFP constraints
	before the core constraints. Adjust attributes.
	(*thumb2_movdf_vfp"): Likewise.

From-SVN: r176867
2011-07-28 12:02:17 +00:00
Kai Tietz
9895824116 tree-vrp.c (simplify_stmt_using_ranges): Remove TRUTH_NOT_EXPR case.
2011-07-28  Kai Tietz  <ktietz@redhat.com>

        * tree-vrp.c (simplify_stmt_using_ranges): Remove
        TRUTH_NOT_EXPR case.
        (simplify_truth_ops_using_ranges): Likewise.
        (build_assert_expr_for): Likewise.
        (build_assert_expr_for_1): Remove TRUTH_NOT_EXPR case
        and handle BIT_NOT_EXPR for truth-operation.

From-SVN: r176866
2011-07-28 12:41:51 +02:00
Georg-Johann Lay
f627fef27a re PR target/49313 (Inefficient libgcc implementations for avr)
PR target/49313
	Undo r176835 from trunk
	2011-07-27  Georg-Johann Lay

From-SVN: r176865
2011-07-28 10:29:17 +00:00
Alan Modra
c35c943f68 update copyright
From-SVN: r176863
2011-07-28 17:55:26 +09:30
Georg-Johann Lay
296799ba06 re PR target/49687 ([avr] Missed optimization for widening MUL)
PR target/49687
	* config/avr/t-avr (LIB1ASMFUNCS): Remove _xmulhisi3_exit.
	Add _muluhisi3, _mulshisi3, _usmulhisi3.
	* config/avr/libgcc.S (__mulsi3): Rewrite.
	(__mulhisi3): Rewrite.
	(__umulhisi3): Rewrite.
	(__usmulhisi3): New.
	(__muluhisi3): New.
	(__mulshisi3): New.
	(__mulohisi3): New.
	(__mulqi3, __mulqihi3, __umulqihi3, __mulhi3): Use DEFUN/ENDF to
	declare.
	* config/avr/predicates.md (pseudo_register_operand): Rewrite.
	(pseudo_register_or_const_int_operand): New.
	(combine_pseudo_register_operand): New.
	(u16_operand): New.
	(s16_operand): New.
	(o16_operand): New.
	* config/avr/avr.c (avr_rtx_costs): Handle costs for mult:SI.
	* config/avr/avr.md (QIHI, QIHI2): New mode iterators.
	(any_extend, any_extend2): New code iterators.
	(extend_prefix): New code attribute.
	(mulsi3): Rewrite. Turn insn to expander.
	(mulhisi3): Ditto.
	(umulhisi3): Ditto.
	(usmulhisi3): New expander.
	(*mulsi3): New insn-and-split.
	(mulu<mode>si3): New insn-and-split.
	(muls<mode>si3): New insn-and-split.
	(mulohisi3): New insn-and-split.
	(*uumulqihisi3, *uumulhiqisi3, *uumulhihisi3, *uumulqiqisi3,
	*usmulqihisi3, *usmulhiqisi3, *usmulhihisi3, *usmulqiqisi3,
	*sumulqihisi3, *sumulhiqisi3, *sumulhihisi3, *sumulqiqisi3,
	*ssmulqihisi3, *ssmulhiqisi3, *ssmulhihisi3, *ssmulqiqisi3): New
	insn-and-split.
	(*mulsi3_call): Rewrite.
	(*mulhisi3_call): Rewrite.
	(*umulhisi3_call): Rewrite.
	(*usmulhisi3_call): New insn.
	(*muluhisi3_call): New insn.
	(*mulshisi3_call): New insn.
	(*mulohisi3_call): New insn.
	(extendqihi2): Use combine_pseudo_register_operand as predicate
	for operand 1.
	(extendqisi2): Ditto.
	(zero_extendqihi2): Ditto.
	(zero_extendqisi2): Ditto.
	(zero_extendhisi2): Ditto.
	(extendhisi2): Ditto. Don't early-clobber operand 0.

From-SVN: r176862
2011-07-28 08:03:07 +00:00
Alan Modra
2374a88acf linux-unwind.h (frob_update_context <__powerpc64__>): Leave r2 REG_UNSAVED if stopped on the instruction that saves r2 in a plt call stub.
* config/rs6000/linux-unwind.h (frob_update_context <__powerpc64__>):
	Leave r2 REG_UNSAVED if stopped on the instruction that saves r2
	in a plt call stub.  Do restore r2 if stopped on bctrl.

From-SVN: r176861
2011-07-28 17:14:24 +09:30
Uros Bizjak
d8fa1b739f i386.c (add->lea splitter): Add SWI mode to PLUS RTX.
* config/i386/i386.c (add->lea splitter): Add SWI mode to PLUS RTX.

From-SVN: r176860
2011-07-28 09:18:49 +02:00
Jakub Jelinek
542550cf6c i386.exp (check_effective_target_bmi): Make sure the builtin isn't optimized away.
* gcc.target/i386/i386.exp (check_effective_target_bmi): Make sure
	the builtin isn't optimized away.

From-SVN: r176859
2011-07-28 08:35:38 +02:00
GCC Administrator
1c9275a9ab Daily bump.
From-SVN: r176856
2011-07-28 00:18:04 +00:00
Tobias Burnus
4bfd470b85 re PR fortran/45586 (ICE non-trivial conversion at assignment)
2011-07-27  Tobias Burnus  <burnus@net-b.de>

        PR fortran/45586
        * trans-types.c (gfc_get_derived_type): Ensure that pointer
        component types are marked as nonrestricted.

2011-07-27  Tobias Burnus  <burnus@net-b.de>

        PR fortran/45586
        * gfortran.dg/lto/pr45586-2_0.f90: New.

From-SVN: r176852
2011-07-28 00:33:00 +02:00
Aldy Hernandez
fa8a398ea9 re PR middle-end/49875 (FAIL: c-c++-common/cxxbitfields-4.c)
PR middle-end/49875
        * c-c++-common/cxxbitfields-4.c: Check for smaller than long
        moves.
        * c-c++-common/cxxbitfields-5.c: Same.

From-SVN: r176848
2011-07-27 19:51:04 +00:00
Paolo Carlini
fa45990097 re PR c++/49813 ([C++0x] sinh vs asinh vs constexpr)
2011-07-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/49813
	* include/c_global/cmath: Use _GLIBCXX_CONSTEXPR and constexpr.

From-SVN: r176847
2011-07-27 19:33:51 +00:00
Ulrich Weigand
a5f9523c7c target-supports.exp (check_effective_target_mmap): Use check_function_available.
* lib/target-supports.exp (check_effective_target_mmap): Use
	check_function_available.

From-SVN: r176846
2011-07-27 19:01:23 +00:00
Jeffrey Yasskin
ce77c22f1b Propagate the source location of a template's function_decl to the template_decl built out of it.
Propagate the source location of a template's function_decl to the
template_decl built out of it.  Without this, specializations
generated before the template was defined get the location of the
closing ')' instead of the location of the template's name, which can
produce inconsistent locations between translation units, which makes
gold's ODR checker unhappy.

	* gcc/cp/pt.c (build_template_decl): Copy the function_decl's source
	location to the new template_decl.
	* gcc/testsuite/g++.old-deja/g++.pt/crash60.C: Updated.
	* libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc: Updated.

From-SVN: r176845
2011-07-27 18:38:48 +00:00
Jakub Jelinek
f22cfb2e4e re PR target/49866 (-mcmodel=large tail call fails to assemble)
PR target/49866
	* gcc.target/i386/pr49866.c: New test.

From-SVN: r176842
2011-07-27 20:19:40 +02:00
Yukhin Kirill
084e45a515 Add BMI testcases.
2011-07-27  Yukhin Kirill  <kirill.yukhin@intel.com>

	* gcc.target/i386/i386.exp (check_effective_target_bmi): New.
	* gcc.target/i386/bmi-andn-1.c: New test.
	* gcc.target/i386/bmi-andn-1a.c: Likewise.
	* gcc.target/i386/bmi-andn-2.c: Likewise.
	* gcc.target/i386/bmi-andn-2a.c: Likewise.
	* gcc.target/i386/bmi-bextr-1.c: Likewise.
	* gcc.target/i386/bmi-bextr-1a.c: Likewise.
	* gcc.target/i386/bmi-bextr-2.c: Likewise.
	* gcc.target/i386/bmi-bextr-2a.c: Likewise.
	* gcc.target/i386/bmi-blsi-1.c: Likewise.
	* gcc.target/i386/bmi-blsi-1a.c: Likewise.
	* gcc.target/i386/bmi-blsi-2.c: Likewise.
	* gcc.target/i386/bmi-blsi-2a.c: Likewise.
	* gcc.target/i386/bmi-blsmsk-1.c: Likewise.
	* gcc.target/i386/bmi-blsmsk-1a.c: Likewise.
	* gcc.target/i386/bmi-blsmsk-2.c: Likewise.
	* gcc.target/i386/bmi-blsmsk-2a.c: Likewise.
	* gcc.target/i386/bmi-blsr-1.c: Likewise.
	* gcc.target/i386/bmi-blsr-1a.c: Likewise.
	* gcc.target/i386/bmi-blsr-2.c: Likewise.
	* gcc.target/i386/bmi-blsr-2a.c: Likewise.
	* gcc.target/i386/bmi-tzcnt-1.c: Likewise.
	* gcc.target/i386/bmi-tzcnt-1a.c: Likewise.
	* gcc.target/i386/bmi-tzcnt-2.c: Likewise.
	* gcc.target/i386/bmi-tzcnt-2a.c: Likewise.

From-SVN: r176840
2011-07-27 10:45:41 -07:00
Sebastian Pop
3689198db0 Fix PR49471: canonicalize_loop_ivs should not generate unsigned types.
2011-07-27  Sebastian Pop  <sebastian.pop@amd.com>

	PR tree-optimization/49471
	* tree-ssa-loop-manip.c (canonicalize_loop_ivs): Build an unsigned
	iv only when the largest type is unsigned.  Do not call
	lang_hooks.types.type_for_size.

	* testsuite/libgomp.graphite/force-parallel-1.c: Un-xfail.
	* testsuite/libgomp.graphite/force-parallel-2.c: Adjust pattern.

From-SVN: r176838
2011-07-27 16:53:09 +00:00
Sebastian Pop
27165eddf6 PR45450: disable legality check after an openscop read
2011-07-27  Sebastian Pop  <sebastian.pop@amd.com>

	PR middle-end/45450
	* graphite-poly.c (apply_poly_transforms): Disable legality check
	after an openscop read.

From-SVN: r176837
2011-07-27 16:53:02 +00:00
Sebastian Pop
bd4a54da00 Fix PR47691: do not abort compilation when code generation fails
2011-07-27  Sebastian Pop  <sebastian.pop@amd.com>

	PR middle-end/47691
	* graphite-clast-to-gimple.c (translate_clast_user): Update use of
	copy_bb_and_scalar_dependences.
	* sese.c (rename_uses): Do not call gcc_assert.  Set gloog_error.
	(graphite_copy_stmts_from_block): Update call to rename_uses.
	(copy_bb_and_scalar_dependences): Update call to
	graphite_copy_stmts_from_block.
	* sese.h (copy_bb_and_scalar_dependences): Update declaration.

	* gfortran.dg/graphite/id-pr47691.f: New.

From-SVN: r176836
2011-07-27 16:52:52 +00:00
Georg-Johann Lay
04c9ea12e0 re PR target/49313 (Inefficient libgcc implementations for avr)
PR target/49313
	* config/avr/libgcc.S (__ffshi2): Don't skip 2-word instruction.
	(__ctzsi2): Result for 0 may be undefined.
	(__ctzhi2): Result for 0 may be undefined.
	(__popcounthi2): Don't clobber r30. Use __popcounthi2_tail.
	(__popcountsi2): Ditto. And don't clobber r26.
	(__popcountdi2): Ditto. And don't clobber r27.
	* config/avr/avr.md (UNSPEC_COPYSIGN): New c_enum.
	(parityhi2): New expand.
	(paritysi2): New expand.
	(popcounthi2): New expand.
	(popcountsi2): New expand.
	(clzhi2): New expand.
	(clzsi2): New expand.
	(ctzhi2): New expand.
	(ctzsi2): New expand.
	(ffshi2): New expand.
	(ffssi2): New expand.
	(copysignsf3): New insn.
	(bswapsi2): New expand.
	(*parityhi2.libgcc): New insn.
	(*parityqihi2.libgcc): New insn.
	(*paritysihi2.libgcc): New insn.
	(*popcounthi2.libgcc): New insn.
	(*popcountsi2.libgcc): New insn.
	(*popcountqi2.libgcc): New insn.
	(*popcountqihi2.libgcc): New insn-and-split.
	(*clzhi2.libgcc): New insn.
	(*clzsihi2.libgcc): New insn.
	(*ctzhi2.libgcc): New insn.
	(*ctzsihi2.libgcc): New insn.
	(*ffshi2.libgcc): New insn.
	(*ffssihi2.libgcc): New insn.
	(*bswapsi2.libgcc): New insn.

From-SVN: r176835
2011-07-27 16:39:13 +00:00
Uros Bizjak
479a49210d i386.c (ix86_expand_move): Do not explicitly check the mode of symbolic_opreand RTXes.
* config/i386/i386.c (ix86_expand_move): Do not explicitly check
	the mode of symbolic_opreand RTXes.

From-SVN: r176834
2011-07-27 18:21:18 +02:00
Uros Bizjak
7aecd4e895 predicates.md (x86_64_movabs_operand): Reject pic32_bit_operand operands.
* config/i386/predicates.md (x86_64_movabs_operand): Reject
	pic32_bit_operand operands.
	* config/i386/i386.c (ix86_expand_move): Check x86_64_movabs_operand
	in DImode.

From-SVN: r176833
2011-07-27 18:16:42 +02:00
Uros Bizjak
5019a14eee avx-os-support.h: New.
* gcc.target/i386/avx-os-support.h: New.
	* gcc.target/i386/avx-check.h: Include avx-os-support.h
	(main): Check avx_os_support before the test is run.
	* gcc.target/i386/aes-avx-check.h: Ditto.
	* gcc.target/i386/pclmul-avx-check.h: Ditto.

From-SVN: r176829
2011-07-27 17:39:58 +02:00
Kai Tietz
2fe83a0c9f i386.c (ix86_option_override_internal): Allow -mabi for 32-bit, too.
* config/i386/i386.c (ix86_option_override_internal): Allow -mabi
        for 32-bit, too.
        (ix86_handle_abi_attribute): Allow function attributes
        ms_abi/sysv_abi in 32-bit mode, too.
        * doc/extend.texi: Adjust attribute documentation.

        * gcc.target/i386/aggregate-ret3.c: New test.
        * gcc.target/i386/aggregate-ret4.c: New test.

From-SVN: r176828
2011-07-27 17:33:50 +02:00
Kai Tietz
eb9820c0a3 gimple-fold.c (or_comparisons_1): Remove TRUTH_AND/OR expression handling.
2011-07-27  Kai Tietz  <ktietz@redhat.com>

        * gimple-fold.c (or_comparisons_1): Remove TRUTH_AND/OR
        expression handling.
        (and_var_with_comparison_1): Likewise.

From-SVN: r176827
2011-07-27 16:59:40 +02:00
Aldy Hernandez
1169e45d27 params.h (ALLOW_STORE_DATA_RACES): New.
* params.h (ALLOW_STORE_DATA_RACES): New.
	* params.def (PARAM_ALLOW_STORE_DATA_RACES): New.
	* Makefile.in (expr.o): Depend on PARAMS_H.
	* machmode.h (get_best_mode): Add argument.
	* fold-const.c (optimize_bit_field_compare): Add argument to
	get_best_mode.
	(fold_truthop): Same.
	* ifcvt.c (noce_emit_move_insn): Add argument to store_bit_field.
	* expr.c (emit_group_store): Same.
	(copy_blkmode_from_reg): Same.
	(write_complex_part): Same.
	(optimize_bitfield_assignment_op): Add argument.
	Add argument to get_best_mode.
	(get_bit_range): New.
	(expand_assignment): Calculate maxbits and pass it down
	accordingly.
	(store_field): New argument.
	(expand_expr_real_2): New argument to store_field.
	Include params.h.
	* expr.h (store_bit_field): New argument.
	* stor-layout.c (get_best_mode): Restrict mode expansion by taking
	into account maxbits.
	* calls.c (store_unaligned_arguments_into_pseudos): New argument
	to store_bit_field.
	* expmed.c (store_bit_field_1): New argument.  Use it.
	(store_bit_field): Same.
	(store_fixed_bit_field): Same.
	(store_split_bit_field): Same.
	(extract_bit_field_1): Pass new argument to get_best_mode.
	(extract_bit_field): Same.
	* stmt.c (store_bit_field): Pass new argument to store_bit_field.
	* doc/invoke.texi: Document parameter allow-store-data-races.

From-SVN: r176824
2011-07-27 13:22:09 +00:00
Daniel Carrera
4f13e17fff re PR fortran/49755 (ALLOCATE with STAT= produces invalid code for already allocated vars)
2011-07-26  Daniel Carrera  <dcarrera@gmail.com>

	PR fortran/49755
	* trans.c (gfc_allocate_using_malloc): Change function signature.
	Return nothing. New parameter "pointer". Eliminate temorary variables.
	(gfc_allocate_using_lib): Ditto.
	(gfc_allocate_allocatable): Ditto. Update call to gfc_allocate_using_lib
	and gfc_allocate_using_malloc. Do not free and then reallocate a
	variable that is already allocated.
	(gfc_likely): New function. Basedon gfc_unlikely.
	* trans-array.c (gfc_array_init_size): New parameter "descriptor_block".
	Instructions to modify the array descriptor are stored in this block
	while other instructions continue to be stored in "pblock".
	(gfc_array_allocate): Update call to gfc_array_init_size. Move the
	descriptor_block so that the array descriptor is only updated if
	the array was allocated successfully.
	Update calls to gfc_allocate_allocatable and gfc_allocate_using_malloc.
	* trans.h (gfc_allocate_allocatable): Change function signature.
	Function now returns void.
	(gfc_allocate_using_lib): Ditto, and new function parameter.
	(gfc_allocate_using_malloc): Ditto.
	* trans-openmp.c (gfc_omp_clause_default_ctor,
	gfc_omp_clause_copy_ctor,gfc_trans_omp_array_reduction): Replace a call
	to gfc_allocate_allocatable with gfc_allocate_using_malloc.
	* trans-stmt.c (gfc_trans_allocate): Update function calls for
	gfc_allocate_allocatable and gfc_allocate_using_malloc.



2011-07-26  Daniel Carrera  <dcarrera@gmail.com>

	PR fortran/49755
	* gfortran.dg/multiple_allocation_1.f90: Fix test. Allocating an
	allocated array should *not* change its size.
	* gfortran.dg/multiple_allocation_3.f90: New test.

From-SVN: r176822
2011-07-27 10:10:06 +00:00
Jakub Jelinek
7bbdd4e9c3 dwarf2out.c (output_macinfo_op): Ensure fd->filename points to GC allocated copy of the string.
* dwarf2out.c (output_macinfo_op): Ensure fd->filename points
	to GC allocated copy of the string.
	(dwarf2out_finish): Emit .debug_macinfo or .debug_macro sections
	before .debug_line, not after it.

From-SVN: r176819
2011-07-27 11:36:25 +02:00