Add round_nimm_scalar_predicate for scalar SSE integer to floating point
conversions since round_nimm_predicate is for vector operand.
round_constraint can't be used on vector SSE patterns since it is mapped
to "vm". The "xBm" constraint must be used in this case.
gcc/
PR target/69171
* config/i386/sse.md (<sse>_sqrt<mode>2<mask_name><round_name>):
Use the "xBm" constraint.
(float<sseintvecmodelower><mode>2<mask_name><round_name):
Likewise.
(sse_cvtsi2ss<round_name>): Use round_nimm_scalar_predicate.
(sse_cvtsi2ssq<round_name>): Likewise.
(sse_cvtss2si<round_name>): Likewise.
(sse_cvtss2siq<round_name>): Likewise.
(sse2_cvtsi2sdq<round_name>): Likewise.
(sse2_cvtsd2si<round_name>): Likewise.
(sse2_cvtsd2siq<round_name>): Likewise.
* config/i386/subst.md (round_nimm_scalar_predicate): New
predicate.
gcc/testsuite/
PR target/69171
* gcc.target/i386/pr69171-1.c: New test.
* gcc.target/i386/pr69171-2.c: Likewise.
* gcc.target/i386/pr69171-3.c: Likewise.
* gcc.target/i386/pr69171-4.c: Likewise.
* gcc.target/i386/pr69171-5.c: Likewise.
* gcc.target/i386/pr69171-6.c: Likewise.
From-SVN: r232126
PR middle-end/67639
* varasm.c (make_decl_rtl): Mark invalid register vars as
DECL_EXTERNAL.
testsuite/
PR middle-end/67639
* c-c++-common/pr67639.c: New test.
From-SVN: r232125
PR tree-optimization/69141
* tree-ssa-pre.c: Include langhooks.h.
(eliminate_dom_walker::before_dom_children): Use
lang_hooks.decl_printable_name instead of
cgraph_node::get ()->name ().
* g++.dg/opt/pr69141.C: New test.
From-SVN: r232123
PR middle-end/68960
* gimple-expr.c (copy_var_decl): If var has DECL_USER_ALIGN set, copy
it and DECL_ALIGN too.
* testsuite/libgomp.c/pr68960.c: New test.
From-SVN: r232122
PR target/69140
* config/i386/i386.c (ix86_expand_prologue): Declare fs.sp_valid
depending on frame_pointer_needed before remaining integer and SSE
registers are saved.
testsuite/ChangeLog:
PR target/69140
* gcc.target/i386/pr69140.c: New test
From-SVN: r232111
gcc/c/ChangeLog:
* c-parser.c (c_parser_unary_expression): For dereferences, build
a combined location before calling build_indirect_ref, so that
error reports cover the full range, manually updating the c_expr
src_range.
gcc/testsuite/ChangeLog:
* gcc.dg/bad-dereference.c: New test case.
From-SVN: r232110
The all-multi target may be built in parallel with the %_.lo
targets which generate make dependencies that are parsed during
the build of all-multi.
This patch forces all-multi to only run after the *_.lo targets
are done.
libatomic:
PR other/67627
* Makefile.am (all-multi): Add dependency.
* Makefile.in: Regenerate.
From-SVN: r232102
PR sanitizer/69099
* c-convert.c (convert) [INTEGER_TYPE]: Drop ARG. Don't pass ARG to
ubsan_instrument_float_cast. Fold EXPR. Use NULL_TREE instead of
NULL.
* convert.c (convert_to_integer_1): Adjust call to
ubsan_instrument_float_cast. Use NULL_TREE instead of NULL.
* ubsan.c (ubsan_instrument_float_cast): Drop the ARG parameter. Use
EXPR instead of ARG.
* ubsan.h (ubsan_instrument_float_cast): Adjust declaration.
* gcc.dg/ubsan/float-cast-overflow-atomic.c: New test.
From-SVN: r232099
This change adds TYPE_DECL nodes for XVE/XVU parallel types to lexical
scopes so that these types are properly scoped in the debug information.
gcc/ada/ChangeLog:
* gcc-interface/utils.c: Bump copyright year.
(rest_of_record_type_compilation): Add XVE/XVU parallel types to
the current lexical scope.
From-SVN: r232098
PR c/69104
* builtins.c (get_memmodel): Use expansion point location rather than
the input location. Call warning_at rather than warning.
(expand_builtin_atomic_compare_exchange): Likewise.
(expand_builtin_atomic_load): Likewise.
(expand_builtin_atomic_store): Likewise.
(expand_builtin_atomic_clear): Likewise.
* gcc.dg/atomic-invalid-2.c: New.
From-SVN: r232090
Would be more useful if we could use "const char * const *", but there's
a long standing bug where gcc warns about incompatible pointers when you
try to pass in "char **". We can at least constify the array itself as
gcc will not warn in that case.
From-SVN: r232089
Add vector_operand, which is vector_memory_operand or register_operand,
and use it, instead of nonimmediate_operand, in SSE patterns with 16-byte
memory operand.
gcc/
PR target/68991
* config/i386/i386.c (ix86_expand_vector_logical_operator):
Replace nonimmediate_operand with vector_operand.
* config/i386/predicates.md (vector_operand): New predicate.
(general_vector_operand): Replace nonimmediate_operand with
vector_operand.
* config/i386/sse.md: Replace nonimmediate_operand with
vector_operand and m constraint with Bm constraint on SSE
patterns with 16-byte memory operand.
* config/i386/subst.md (round_nimm_predicate): Replace
nonimmediate_operand with vector_operand.
(round_saeonly_nimm_predicate): Likewise.
(round_saeonly_nimm_scalar_predicate): New.
gcc/testsuite/
PR target/68991
* gcc.target/i386/pr68991.c: New test.
From-SVN: r232088
SSE vector arithmetic and logic instructions only accept aligned memory
operand. This patch adds vector_memory_operand and "Bm" constraint for
aligned SSE memory operand. They are applied to SSE plusminus and
any_logic patterns.
gcc/
PR target/68991
* config/i386/constraints.md (Bm): New constraint.
* config/i386/predicates.md (vector_memory_operand): New
predicate.
* config/i386/sse.md: Replace xm with xBm in plusminus and
any_logic patterns.
gcc/testsuite/
PR target/68991
* g++.dg/pr68991-1.C: New test.
* g++.dg/pr68991-2.C: Likewise.
From-SVN: r232087
[PATCH v2] ia64: don't use dynamic relocations for local symbols
PR other/60465
* config/ia64/ia64.c (ia64_expand_load_address): Use gprel64
for local symbolic operands.
* config/ia64/predicates.md (local_symbolic_operand64): New
predicate.
PR other/60465
* gcc.target/ia64/pr60465-gprel64.c: New test.
* gcc.target/ia64/pr60465-gprel64-c37.c: New test.
From-SVN: r232080
PR rtl-optimization/68651
* combine.c (combine_simplify_rtx): Canonicalize x + x into
x << 1.
* gcc.target/aarch64/pr68651_1.c: New test.
From-SVN: r232077
gcc/c-family/ChangeLog:
PR c/69122
* c-indentation.c (get_visual_column): Remove default argument.
(should_warn_for_misleading_indentation): For the multiline case,
update call to get_visual_column for next_stmt_exploc so that it
captures the location of the first non-whitespace character in the
relevant line. Don't issue warnings if there is non-whitespace
before the next statement.
gcc/testsuite/ChangeLog:
PR c/69122
* c-c++-common/Wmisleading-indentation.c (pr69122): New function.
From-SVN: r232076
PR target/68770
* ira-costs.c (copy_cost): Initialise the t_icode field of the
secondary_reload_info structure.
tests: * g++.dg/pr68770.C: New test.
From-SVN: r232072
[gcc]
2016-01-04 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/constraints.md (wo constraint): New constraint for
ISA 3.0 (power9).
* config/rs6000/rs6000.c (rs6000_debug_reg_global): Add support
for wo constraint.
(rs6000_init_hard_regno_mode_ok): Likewise.
* config/rs6000/rs6000.h (r6000_reg_class_enum): Add support for
wo constraint.
* config/rs6000/altivec.md (altivec_vperm_<mode>): Clean up vperm
expanders not to have constraints. Add support for ISA 3.0 xxperm
instruction. Add support for fusing xxlor with xxperm.
(altivec_vperm_<mode>_internal): Likewise.
(altivec_vperm_v8hiv16qi): Likewise.
(altivec_vperm_<mode>v16q): Likewise.
(altivec_vperm_<mode>_uns): Likewise.
(vperm_v8hiv4si): Likewise.
(vperm_v16qiv8hi): Likewise.
* doc/md.texi (RS/6000 constraints): Document wo constraint.
[gcc/testsuite]
2016-01-04 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc.target/powerpc/p9-permute.c: New test for xxperm code
generation.
From-SVN: r232060
PR c/68908
* c-typeck.c (build_atomic_assign): Improve commentary. Add
optimization to use __atomic_fetch_* built-in if possible.
* gcc.dg/atomic/c11-atomic-exec-6.c: New test.
* gcc.dg/atomic/c11-atomic-exec-7.c: New test.
* gcc.dg/atomic/stdatomic-op-5.c: New test.
From-SVN: r232052