Uros Bizjak [Thu, 12 Feb 2009 17:33:18 +0000 (18:33 +0100)]
fp-int-convert-float128-timode.c: Do not check for lp64 in "dg-do run" directive.
* gcc.dg/torture/fp-int-convert-float128-timode.c: Do not check
for lp64 in "dg-do run" directive. Remove dg-xfail-if directive.
* gcc.dg/torture/fp-int-convert-timode.c: Remove xfail directive.
H.J. Lu [Thu, 12 Feb 2009 16:30:53 +0000 (08:30 -0800)]
longlong.h (sub_ddmmss): New for ia64.
gcc/
2009-02-12 Uros Bizjak <ubizjak@gmail.com>
* longlong.h (sub_ddmmss): New for ia64. Ported from GMP 4.2.
(umul_ppmm): Likewise.
(count_leading_zeros): Likewise.
(count_trailing_zeros): Likewise.
(UMUL_TIME): Likewise.
2009-02-12 H.J. Lu <hongjiu.lu@intel.com>
* config.gcc: Add ia64/t-fprules-softfp soft-fp/t-softfp to
tmake_file for ia64*-*-linux*.
* config/ia64/ia64.c (ia64_soft_fp_init_libfuncs): New.
(ia64_expand_compare): Use HPUX library for TFmode only for
HPUX.
(ia64_builtins): Add IA64_BUILTIN_COPYSIGNQ, IA64_BUILTIN_FABSQ
and IA64_BUILTIN_INFQ.
(ia64_init_builtins): Initialize __builtin_infq,
__builtin_fabsq and __builtin_copysignq if not HPUX.
(ia64_expand_builtin): Handle IA64_BUILTIN_COPYSIGNQ,
IA64_BUILTIN_FABSQ and IA64_BUILTIN_INFQ.
* config/ia64/lib1funcs.asm (__divtf3): Define only if
SHARED is defined.
(__fixtfti): Likewise.
(__fixunstfti): Likewise.
(__floattitf): Likewise.
Jakub Jelinek [Wed, 11 Feb 2009 21:57:52 +0000 (22:57 +0100)]
re PR middle-end/39154 (Miscompilation of VLAs in nested parallel regions)
PR middle-end/39154
* gimplify.c (omp_notice_variable): If adding GOVD_SEEN
bit to variable length decl's flags, add it also to its
pointer replacement variable.
Uros Bizjak [Wed, 11 Feb 2009 11:43:24 +0000 (12:43 +0100)]
re PR target/39118 (x86_64 red zone violation)
PR target/39118
* config/i386/i386.md (UNSPEC_MEMORY_BLOCKAGE): New constant.
(memory_blockage): New expander.
(*memory_blockage): New insn pattern.
* config/i386/i386.c (ix86_expand_prologue): Use memory_blockage
instead of general blockage at the end of function prologue when
frame pointer is used to access red zone area. Do not emit blockage
when profiling, it is emitted in generic code.
(ix86_expand_epilogue): Emit memory_blockage at the beginning of
function epilogue when frame pointer is used to access red zone area.
Paolo Bonzini [Wed, 11 Feb 2009 08:56:41 +0000 (08:56 +0000)]
i386.md: Add two new peephole2 to avoid mov followed by arithmetic with memory operands.
gcc:
2009-02-06 Paolo Bonzini <bonzini@gnu.org>
* config/i386/i386.md: Add two new peephole2 to avoid mov followed
by arithmetic with memory operands.
* config/i386/predicates.md (commutative_operator): New.
gcc/testsuite:
2009-02-06 Paolo Bonzini <bonzini@gnu.org>
Eric Botcazou [Tue, 10 Feb 2009 22:52:51 +0000 (22:52 +0000)]
alias.h (record_alias_subset): Declare.
* alias.h (record_alias_subset): Declare.
* alias.c (record_alias_subset): Make global.
ada/
* gcc-interface/decl.c (enum alias_set_op): New enumeration.
(copy_alias_set): Rename into...
(relate_alias_sets): ...this. Add third parameter OP. Retrieve the
underlying array of unconstrained arrays for the new type as well.
If the old and new alias sets don't conflict, make one a subset of
the other as per the OP parameter.
(gnat_to_gnu_entity): Adjust calls to copy_alias_set.
<E_Record_Type>: Do not copy the alias set for derived types.
For all types, make the alias set of derived types a superset of
that of their parent type.
(make_aligning_type): Adjust calls to copy_alias_set.
(make_packable_type): Likewise.
* gcc-interface/trans.c (gnat_to_gnu)<N_Validate_Unchecked_Conversion>:
Check for alias set conflict instead of strict equality to issue the
warning.
Uros Bizjak [Tue, 10 Feb 2009 16:12:33 +0000 (17:12 +0100)]
re PR target/39118 (x86_64 red zone violation)
PR target/39118
* config/i386/i386.c (expand_prologue): Emit blockage at the end
of function prologue when frame pointer is used to access
red zone area.
Richard Guenther [Tue, 10 Feb 2009 14:54:13 +0000 (14:54 +0000)]
re PR tree-optimization/39132 (wrong code generated with -ftree-loop-disttribution)
2009-02-10 Richard Guenther <rguenther@suse.de>
PR tree-optimization/39132
* tree-loop-distribution.c (todo): New global var.
(generate_memset_zero): Trigger TODO_rebuild_alias.
(tree_loop_distribution): Return todo.
H.J. Lu [Tue, 10 Feb 2009 14:00:46 +0000 (14:00 +0000)]
re PR target/39119 (Update classification of aggregates with __m256)
gcc/
2009-02-10 H.J. Lu <hongjiu.lu@intel.com>
PR target/39119
* config/i386/i386.c (x86_64_reg_class): Remove X86_64_AVX_CLASS.
(x86_64_reg_class_name): Removed.
(classify_argument): Return 0 if bytes > 32. Return 0 if the
first one isn't X86_64_SSE_CLASS or any other ones aren't
X86_64_SSEUP_CLASS when size > 16bytes. Don't turn
X86_64_SSEUP_CLASS into X86_64_SSE_CLASS if the preceded one
is X86_64_SSEUP_CLASS. Set AVX modes to 1 X86_64_SSE_CLASS
and 3 X86_64_SSEUP_CLASS.
(construct_container): Remove X86_64_AVX_CLASS. Handle 4
registers with 1 X86_64_SSE_CLASS and 3 X86_64_SSEUP_CLASS.
Ben Elliston [Tue, 10 Feb 2009 00:13:34 +0000 (00:13 +0000)]
rs6000.md (allocate_stack): Always use an update form instruction to update the stack back chain word...
* config/rs6000/rs6000.md (allocate_stack): Always use an update
form instruction to update the stack back chain word, even if the
user has disabled the generation of update instructions.
(movdi_<mode>_update_stack): New.
(movsi_update_stack): Likewise.
* config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Likewise,
always use an update form instruction to update the stack back
chain word.
Sebastian Pop [Mon, 9 Feb 2009 20:35:09 +0000 (20:35 +0000)]
re PR tree-optimization/38953 ([graphite] loop closed SSA not maintained by graphite code generation)
2009-02-09 Sebastian Pop <sebastian.pop@amd.com>
PR middle-end/38953
* graphite.c (if_region_set_false_region): After moving a region
in the false branch of a condition, remove the empty dummy basic block.
(gloog): Remove wrong fix for PR38953.
Eric Botcazou [Mon, 9 Feb 2009 18:34:20 +0000 (18:34 +0000)]
decl.c (gnat_to_gnu_entity): Set TYPE_NONALIASED_COMPONENT on the array type only if appropriate.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_String_Literal_Subtype>:
Set TYPE_NONALIASED_COMPONENT on the array type only if appropriate.
(copy_alias_set): Assert that arrays have the same aliasing settings.
(substitute_in_type) <ARRAY_TYPE>: Copy TYPE_NONALIASED_COMPONENT.
re PR tree-optimization/35202 (exp->expf transformation incorrect with -fmath-errno)
2009-02-09 Richard Guenther <rguenther@suse.de>
PR middle-end/35202
* convert.c (convert_to_real): Disable (float)fn((double)x)
to fnf(x) conversion if errno differences may occur and
-fmath-errno is set.
Eric Botcazou [Sun, 8 Feb 2009 23:10:00 +0000 (23:10 +0000)]
tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Make case self-contained.
* tree-ssa-loop-ivopts.c (may_be_nonaddressable_p) <VIEW_CONVERT_EXPR>:
Make case self-contained.
<ARRAY_REF>: Test TYPE_NONALIASED_COMPONENT flag.
ada/
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_String_Literal_Subtype>:
Set TYPE_NONALIASED_COMPONENT on the array type.
* include/std/thread (thread::id): Move definition inside thread.
Use native_handle_type. Remove this_thread::get_id friend.
Change __thread_data_ptr to __shared_base_ptr.
(thread::id::id(native_handle_type): Make public. Still explicit.
Use native_handle_type. Change _M_thread_id to _M_thread.
(thread::__thread_data_base): Rename to _Impl_base. Use id, change
_M_thread_handle to _M_id.
(thread::__thread_data): Rename to _Impl.
Fixup for renames.
(thread::_M_make_thread_data): Return derived type.
(thread::hardware_concurrency): Add definition for default case.
(thread::get_id): Now can define inline.
(thread): Change _M_thread_data to _M_data.
(this_thread::get_id): Now can define inline.
* src/thread.cc (__thread_proxy): Rename to
execute_native_thread_routine.
Fixup for other renames.
* testsuite/30_threads/thread/cons/assign_neg.cc: New.
* testsuite/30_threads/thread/cons/copy_neg.cc: New.
* testsuite/30_threads/thread/algorithm: Move to..
* testsuite/30_threads/thread/swap: ...this.
* testsuite/30_threads/thread/member/hardware_concurrency.cc: Add.
* testsuite/30_threads/thread/id/operators.cc: New.
Joseph Myers [Fri, 6 Feb 2009 20:12:10 +0000 (20:12 +0000)]
re PR c/36432 (“incompatible pointer type” with pointer to array as a struct member)
PR c/36432
* c-decl.c (grokdeclarator): Don't treat [] declarators in fields
as indicating flexible array members unless the field itself is
being declarared as the incomplete array.
testsuite:
* gcc.dg/c90-flex-array-2.c, gcc.dg/c99-flex-array-6.c: New tests.
Paolo Bonzini [Fri, 6 Feb 2009 07:33:05 +0000 (07:33 +0000)]
re PR target/35659 (Miscompiled code with -O2 (but not with -O2 -funroll-loops) on ia64)
2009-02-06 Paolo Bonzini <bonzini@gnu.org>
PR tree-optimization/35659
* tree-ssa-sccvn.c (vn_constant_eq, vn_reference_eq, vn_nary_op_eq
vn_phi_eq): Shortcut if hashcode does not match.
(vn_reference_op_compute_hash): Do not call iterative_hash_expr for
NULL operands.
* tree-ssa-pre.c (pre_expr_hash): Look at hashcode if available,
and avoid iterative_hash_expr.
(FOR_EACH_VALUE_ID_IN_SET): New.
(value_id_compare): Remove.
(sorted_array_from_bitmap_set): Use FOR_EACH_VALUE_ID_IN_SET to
sort expressions by value id.
* include/std/tuple (_Head_base<>::_Head_base(_UHead&&)): Formatting.
(_Head_base<>::__swap_impl): Rename to _M_swap_impl.
(_Tuple_impl<>::__swap_impl): Likewise and make protected to avoid
exposing it in public std::tuple interface.
Paolo Bonzini [Wed, 4 Feb 2009 20:54:36 +0000 (20:54 +0000)]
re PR rtl-optimization/37889 (SEGV, conditional execution proactively executed the false arm.)
2009-02-04 Paolo Bonzini <bonzini@gnu.org>
Hans-Peter Nilsson <hp@axis.com>
PR rtl-optimization/37889
* rtlanal.c (rtx_addr_can_trap_p_1): Add offset and size arguments.
Move offset handling from PLUS to before the switch. Use new
arguments when considering SYMBOL_REFs too.
(rtx_addr_can_trap_p): Pass dummy offset and size.
(enum may_trap_p_flags): Remove.
(may_trap_p_1): Pass size from MEM_SIZE.
Jakub Jelinek [Wed, 4 Feb 2009 16:50:22 +0000 (17:50 +0100)]
re PR c++/39095 (Mangling changes break ABI)
PR c++/39095
* operators.def: Use COMPONENT_REF code for ->/pt operator again,
remove ./dt operator.
* mangle.c (write_expression): Handle COMPONENT_REF after handling
ADDR_EXPR, for COMPONENT_REF without ARROW_EXPR inside of it
write_string ("dt") instead of using operators.def.
Joseph Myers [Wed, 4 Feb 2009 00:59:21 +0000 (00:59 +0000)]
re PR c/29129 ([DR#341] unnamed parameters using [*])
PR c/29129
* c-decl.c (grokdeclarator): Mark [*] arrays in field declarators
as having variable size. Do not give an error for unnamed
parameters with [*] declarators. Give a warning for type names
with [*] declarators and mark them as variable size.
* c-parser.c (c_parser_sizeof_expression): Do not give an error
for sizeof applied to [*] type names.
testsuite:
* c90-arraydecl-1.c: Do not expect error for [*] in abstract
declarator.
* vla-6.c: Likewise. Expect warning not error for [*] lexically
inside function prototype but not part of parameter declarator.
* vla-11.c: New test.