Commit Graph

160644 Commits

Author SHA1 Message Date
Amaan Cheval
6fa08cbe64 config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for custom LIB_SPEC setup.
2018-04-06  Amaan Cheval  <amaan.cheval@gmail.com>

	* config.gcc (x86_64-*-rtems*): Add rtems.h to tm_file for
	custom LIB_SPEC setup.

From-SVN: r259192
2018-04-06 21:01:23 +00:00
Ruslan Bukin
4d47fe5a8f RISC-V: Support for FreeBSD.
gcc/
	* config.gcc (riscv*-*-freebsd*): Add RISC-V FreeBSD support.
	* config/riscv/freebsd.h: New.
	libgcc/
	* config.host (riscv*-*-freebsd*): Add RISC-V FreeBSD support.

From-SVN: r259190
2018-04-06 13:04:17 -07:00
Thomas Koenig
e889aa0a96 re PR libfortran/85253 (asan detects heap-buffer-overflow in matmul_r4.c)
2018-04-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/85253
	* m4/matmul_internal.m4: If ycount == 1, add one more row to
	the internal buffer.
	* generated/matmul_c10.c: Regenerated.
	* generated/matmul_c16.c: Regenerated.
	* generated/matmul_c4.c: Regenerated.
	* generated/matmul_c8.c: Regenerated.
	* generated/matmul_i1.c: Regenerated.
	* generated/matmul_i16.c: Regenerated.
	* generated/matmul_i2.c: Regenerated.
	* generated/matmul_i4.c: Regenerated.
	* generated/matmul_i8.c: Regenerated.
	* generated/matmul_r10.c: Regenerated.
	* generated/matmul_r16.c: Regenerated.
	* generated/matmul_r4.c: Regenerated.
	* generated/matmul_r8.c: Regenerated.
	* generated/matmulavx128_c10.c: Regenerated.
	* generated/matmulavx128_c16.c: Regenerated.
	* generated/matmulavx128_c4.c: Regenerated.
	* generated/matmulavx128_c8.c: Regenerated.
	* generated/matmulavx128_i1.c: Regenerated.
	* generated/matmulavx128_i16.c: Regenerated.
	* generated/matmulavx128_i2.c: Regenerated.
	* generated/matmulavx128_i4.c: Regenerated.
	* generated/matmulavx128_i8.c: Regenerated.
	* generated/matmulavx128_r10.c: Regenerated.
	* generated/matmulavx128_r16.c: Regenerated.
	* generated/matmulavx128_r4.c: Regenerated.
	* generated/matmulavx128_r8.c: Regenerated.

From-SVN: r259188
2018-04-06 18:49:21 +00:00
Chung-Ju Wu
a58762287e [NDS32] Refine ADJUST_INSN_LENGTH implementation.
gcc/
	* config/nds32/nds32.c (nds32_adjust_insn_length): Refine.
	* config/nds32/nds32.h (ADJUST_INSN_LENGTH): Change the location in
	file.

From-SVN: r259187
2018-04-06 18:36:28 +00:00
Chung-Ju Wu
f467067339 [NDS32] Refine call and return patterns.
gcc/
	* config/nds32/nds32-md-auxiliary.c (nds32_output_return,
	nds32_output_call, nds32_symbol_binds_local_p): New functions.
	* config/nds32/nds32-protos.h (nds32_output_call,
	nds32_output_return): Declare.
	* config/nds32/nds32.md: Refine all the call and return patterns.

Co-Authored-By: Kito Cheng <kito.cheng@gmail.com>

From-SVN: r259186
2018-04-06 18:27:51 +00:00
Jason Merrill
96975b1159 PR c++/85214 - ICE with alias, generic lambda, constexpr if.
Here, since the condition for the constexpr if depends on the type of 'j',
it's still dependent when we are partially instantiating the inner lambda,
so we need to defer instantiating the constexpr if.  When we instantiated
the inner lambda, we tried to substitute into the typename, which failed
because we didn't have a declaration of 'i' available.

Fixed by teaching extract_locals_r to capture local typedefs such as 'ar';
if we have the typedef handy, we don't need to substitute into its
definition.

	* pt.c (extract_locals_r): Remember local typedefs.

From-SVN: r259185
2018-04-06 14:09:53 -04:00
David Malcolm
e1c7971b81 C++: more std header hints; filter on C++ dialect (PR c++/84269)
This patch adds more suggestions as per:
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84269#c10
some of which need C++14 and C++17, and some of which use headers that
exist in earlier standards.

For example, <memory> exists in C++98, but if the user attempts to
use std::make_shared with -std=c++98, they are suggested to include
<memory>, even if they've already included it.

This patch adds the missing names, and fixes the nonsensical suggestions
by detecting if the name isn't available yet, based on the user's
dialect, and reporting things more intelligently:

t.cc: In function 'void test_make_shared()':
t.cc:5:8: error: 'make_shared' is not a member of 'std'
   std::make_shared<int>();
        ^~~~~~~~~~~
t.cc:5:8: note: 'std::make_shared' is only available from C++11 onwards

gcc/cp/ChangeLog:
	PR c++/84269
	* name-lookup.c (struct std_name_hint): Move out of
	get_std_name_hint; add field "min_dialect".
	(get_std_name_hint): Add min_dialect values to all initializers.
	Add <any>, <atomic>, <bitset>, <condition_variable>, <functional>,
	<future>, <istream>, <iterator>, <ostream>, <mutex>, <optional>,
	<shared_mutex>, <string_view>, <thread>, and <variant>.
	Add fstream, ifstream, and ofstream to <fstream>.
	Add istringstream, ostringstream, and stringstream to <sstream>.
	Add basic_string to <string>.
	Add tuple_element and tuple_size to <tuple>.
	Add declval to <utility>.
	Fix ordering of <queue> and <tuple>.
	Return a std_name_hint, rather than a const char *.
	(get_cxx_dialect_name): New function.
	(maybe_suggest_missing_std_header): Detect names that aren't yet
	available in the current dialect, and instead of suggesting a
	missing #include, warn about the dialect.

gcc/testsuite/ChangeLog:
	PR c++/84269
	* g++.dg/lookup/missing-std-include-6.C: Move std::array and
	std::tuple here since they need C++11.
	* g++.dg/lookup/missing-std-include-8.C: New test.
	* g++.dg/lookup/missing-std-include.C: Move std::array and
	std::tuple test to missing-std-include-6.C to avoid failures
	with C++98.

From-SVN: r259184
2018-04-06 17:36:33 +00:00
Jakub Jelinek
c617fb562d re PR debug/85252 (ICE with -g for static zero-length array initialization)
PR debug/85252
	* dwarf2out.c (rtl_for_decl_init): For STRING_CST initializer only
	build CONST_STRING if TYPE_MAX_VALUE is non-NULL and is INTEGER_CST.

	* gcc.dg/debug/pr85252.c: New test.

From-SVN: r259183
2018-04-06 19:28:54 +02:00
Jakub Jelinek
49574486e6 re PR rtl-optimization/84872 (ICE in create_preheader, at cfgloopmanip.c:1536)
PR rtl-optimization/84872
	* cfgloopmanip.c (create_preheader): Use make_forwarder_block even if
	nentry == 1 when CP_FALLTHRU_PREHEADERS and single_entry is
	EDGE_CROSSING edge.

	* gcc.dg/graphite/pr84872.c: New test.

From-SVN: r259182
2018-04-06 19:28:02 +02:00
Jakub Jelinek
e83bc9d775 re PR c++/85210 (ICE with broken structured binding in template)
PR c++/85210
	* pt.c (tsubst_decomp_names): Return error_mark_node and assert
	errorcount is set if tsubst doesn't return a VAR_DECL.

	* g++.dg/cpp1z/decomp42.C: New test.

From-SVN: r259181
2018-04-06 19:27:01 +02:00
David Malcolm
cb73187287 C++: suggest missing headers for implicit use of "std" (PR c++/85021)
We provide fix-it hints for the most common "std" names when an explicit
"std::" prefix is present, however we don't yet provide fix-it hints for
this implicit case:

  using namespace std;
  void f() {  cout << "test"; }

for which we emit:

  t.cc: In function 'void f()':
  t.cc:2:13: error: 'cout' was not declared in this scope
  void f() {  cout << "test"; }
              ^~~~

This patch detects if a "using namespace std;" directive is present
in the current namespace, and if so, offers a suggestion for
unrecognized names that are in our list of common "std" names:

  t.cc: In function 'void f()':
  t.cc:2:13: error: 'cout' was not declared in this scope
   void f() {  cout << "test"; }
               ^~~~
  t.cc:2:13: note: 'std::cout' is defined in header '<iostream>'; did you forget to '#include <iostream>'?
  +#include <iostream>
   using namespace std;
   void f() {  cout << "test"; }
               ^~~~

gcc/cp/ChangeLog:
	PR c++/85021
	* name-lookup.c (using_directives_contain_std_p): New function.
	(has_using_namespace_std_directive_p): New function.
	(suggest_alternatives_for): Simplify if/else logic using early
	returns.  If no candidates were found, and there's a
	"using namespace std;" directive, call
	maybe_suggest_missing_std_header.
	(maybe_suggest_missing_header): Split later part of the function
	into..
	(maybe_suggest_missing_std_header): New.

gcc/testsuite/ChangeLog:
	PR c++/85021
	* g++.dg/lookup/missing-std-include-7.C: New test.

From-SVN: r259179
2018-04-06 15:46:04 +00:00
Jason Merrill
a82f886aa6 PR c++/85242 - ICE with class definition in template parm.
* cp-tree.h (PROCESSING_REAL_TEMPLATE_DECL_P): False if
	processing_template_parmlist.

From-SVN: r259178
2018-04-06 11:12:34 -04:00
Jason Merrill
0c923157ab PR c++/85240 - LTO ICE with using of undeduced auto fn.
* cp-gimplify.c (cp_genericize_r): Discard using of undeduced auto.

From-SVN: r259177
2018-04-06 11:12:28 -04:00
Tamar Christina
d8ab9ce00a Reverted commit r254862
From-SVN: r259169
2018-04-06 13:16:39 +00:00
Richard Biener
ef2e5ec2d4 re PR tree-optimization/85244 (Bad optimisation with flexible array member (may be related to -ftree-dominator-opts))
2018-04-06  Richard Biener  <rguenther@suse.de>

	PR middle-end/85244
	* tree-dfa.c (get_ref_base_and_extent): Reset seen_variable_array_ref
	after seeing a component reference with an adjacent field.  Treat
	refs to arrays at struct end of external decls similar to
	refs to unconstrained commons.

	* gcc.dg/torture/pr85244-1.c: New testcase.
	* gcc.dg/torture/pr85244-2.c: Likewise.

From-SVN: r259168
2018-04-06 11:47:18 +00:00
Jakub Jelinek
5a98025d8f re PR sanitizer/85213 (-fsanitize=undefined internal compiler error: in fold_convert_loc, at fold-const.c:2402)
PR sanitizer/85213
	* fold-const.c (twoval_comparison_p): Remove SAVE_P argument and don't
	look through SAVE_EXPRs with non-side-effects argument.  Adjust
	recursive calls.
	(fold_comparison): Adjust twoval_comparison_p caller, don't handle
	save_p here.

	* c-c++-common/ubsan/pr85213.c: New test.

From-SVN: r259167
2018-04-06 13:24:36 +02:00
Richard Biener
6ca838330b re PR rtl-optimization/85180 (Infinite loop in RTL DSE optimizer)
2018-04-06  Richard Biener  <rguenther@suse.de>

	PR middle-end/85180
	* alias.c (find_base_term): New wrapper around find_base_term
	unwinding CSELIB_VAL_PTR changes.
	(find_base_term): Do not restore CSELIB_VAL_PTR during the
	recursion.

	* gcc.dg/pr85180.c: New testcase.

From-SVN: r259166
2018-04-06 08:30:52 +00:00
Andreas Krebbel
54ebcca795 IBM Z: Fix vcond-shift testcase.
gcc/testsuite/ChangeLog:

2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.target/s390/vector/vcond-shift.c: Use the proper conditions
	to trigger the optimization. Do some cleanup and function
	renaming.  Add more test functions.

From-SVN: r259165
2018-04-06 07:46:30 +00:00
Andreas Krebbel
aad98a6104 IBM Z: Use the dedicated NOP instructions for "nop"
We still use lr r0,r0 as a NOP instruction although we have some kind
of dedicated NOP instruction (nopr) which maps to a "branch never".

As a side-effect this fixes testcases scanning for NOPs
e.g. patchable_function_entry-*.

As another side-effect this makes it difficult to distingiush NOPs
generated for hotpatching from NOPs added when using -O0 to attach
location information to it.  Hence I had to make sure that the hotpatch
testcases get skipped when compiling without optimization.

gcc/ChangeLog:

2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/s390.c (s390_z10_optimize_cmp): Expand dedicated NOP
	instructions.
	* config/s390/s390.md (UNSPECV_NOP_LR_0, UNSPECV_NOP_LR_1): New
	constant definitions.
	("nop"): lr 0,0 -> nopr r0
	("nop_lr0", "nop_lr1"): New insn definitions.

gcc/testsuite/ChangeLog:

2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.target/s390/s390.exp: Remove -O0 from list of torture
	options.
	* gcc.target/s390/hotpatch-1.c: Skip when building without
	optimization.
	* gcc.target/s390/hotpatch-10.c: Likewise.
	* gcc.target/s390/hotpatch-11.c: Likewise.
	* gcc.target/s390/hotpatch-12.c: Likewise.
	* gcc.target/s390/hotpatch-13.c: Likewise.
	* gcc.target/s390/hotpatch-14.c: Likewise.
	* gcc.target/s390/hotpatch-15.c: Likewise.
	* gcc.target/s390/hotpatch-16.c: Likewise.
	* gcc.target/s390/hotpatch-17.c: Likewise.
	* gcc.target/s390/hotpatch-18.c: Likewise.
	* gcc.target/s390/hotpatch-19.c: Likewise.
	* gcc.target/s390/hotpatch-2.c: Likewise.
	* gcc.target/s390/hotpatch-3.c: Likewise.
	* gcc.target/s390/hotpatch-4.c: Likewise.
	* gcc.target/s390/hotpatch-5.c: Likewise.
	* gcc.target/s390/hotpatch-6.c: Likewise.
	* gcc.target/s390/hotpatch-7.c: Likewise.
	* gcc.target/s390/hotpatch-8.c: Likewise.
	* gcc.target/s390/hotpatch-9.c: Likewise.

From-SVN: r259164
2018-04-06 07:45:42 +00:00
Andreas Krebbel
bce89076ce Wattributes.c testcase: Disable warning check for IBM Z.
On IBM Z we enforce function alignment to 8 bytes.  Hence we get an
error instead of a warning when trying to specify smaller alignments.

gcc/testsuite/ChangeLog:

2018-04-06  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* c-c++-common/Wattributes.c: Disable warning for s390* target and
	check for an error instead.
	* gcc.dg/Wattributes-6.c: Likewise.

From-SVN: r259163
2018-04-06 07:43:53 +00:00
Chung-Ju Wu
9865d2406b [NDS32] Refine condition of stack_push and stack_pop patterns.
gcc/
	* config/nds32/nds32.md (*stack_push, *stack_pop): Use
	NDS32_V3PUSH_AVAILABLE_P macro.

From-SVN: r259162
2018-04-06 06:33:44 +00:00
Monk Chiang
e228626896 [NDS32] Add hard float support.
gcc/
	* config.gcc (nds32*-*-*): Add v2j v3f v3s checking.
	(nds32*-*-*): Add float and fpu_config into supported_defaults.
	* common/config/nds32/nds32-common.c (TARGET_DEFAULT_TARGET_FLAGS):
	Include TARGET_DEFAULT_FPU_ISA and TARGET_DEFAULT_FPU_FMA.
	* config/nds32/constants.md (unspec_element): Add UNSPEC_COPYSIGN,
	UNSPEC_FCPYNSD, UNSPEC_FCPYNSS, UNSPEC_FCPYSD and UNSPEC_FCPYSS.
	* config/nds32/constraints.md: New constraints and checking for hard
	float configuration.
	* config/nds32/iterators.md: New mode iterator and attribute for hard
	float configuration.
	* config/nds32/nds32-doubleword.md: Use hard float alternatives and
	patterns.
	* config/nds32/nds32-fpu.md: New file.
	* config/nds32/nds32-md-auxiliary.c: New functions and checkings to
	deal with hard float code generation.
	* config/nds32/nds32-opts.h (nds32_arch_type): Add ARCH_V3F and
	ARCH_V3S.
	(abi_type, float_reg_number): New enum type.
	* config/nds32/nds32-predicates.c: New predicates for hard float.
	* config/nds32/nds32-protos.h: Declare functions for hard float.
	* config/nds32/nds32.c: Implementation for hard float configuration.
	* config/nds32/nds32.h: Definitions for hard float configuration.
	* config/nds32/nds32.md: Include hard float machine description and
	modify patterns for hard float configuration.
	* config/nds32/nds32.opt: New options for hard float configuration.
	* config/nds32/predicates.md: New predicates for hard float
	configuration.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r259161
2018-04-06 05:51:33 +00:00
Kuan-Lin Chen
58e297628f [NDS32] Enable relax hint by default.
gcc/
	* common/config/nds32/nds32-common.c
	(nds32_option_optimization_table): Enable -mreleax-hint by default.

From-SVN: r259160
2018-04-06 03:17:41 +00:00
GCC Administrator
91218427d9 Daily bump.
From-SVN: r259159
2018-04-06 00:16:13 +00:00
Jakub Jelinek
86c9f54bb6 re PR c++/85209 (ICE with lambda and structured binding)
PR c++/85209
	* pt.c (tsubst_decomp_names): Don't fail or ICE if DECL_CHAIN (decl3)
	is not prev, if prev == decl.

	* g++.dg/cpp1z/decomp39.C: New test.
	* g++.dg/cpp1z/decomp40.C: New test.

From-SVN: r259156
2018-04-05 23:30:47 +02:00
Jakub Jelinek
a1afa75e01 re PR c++/85208 (ICE with #pragma weak and structured binding)
PR c++/85208
	* decl.c (start_decl): For DECL_DECOMPOSITION_P decls, don't call
	maybe_apply_pragma_weak here...
	(cp_maybe_mangle_decomp): ... but call it here instead.

	* g++.dg/cpp1z/decomp41.C: New test.

From-SVN: r259155
2018-04-05 23:29:51 +02:00
Jason Merrill
d600a0ceb1 PR c++/85136 - ICE with designated init in template.
* decl.c (maybe_deduce_size_from_array_init): Handle dependent
	designated initializer.
	(check_array_designated_initializer): Update ce->index with the
	constant value.

From-SVN: r259152
2018-04-05 15:43:39 -04:00
Jakub Jelinek
4c1da8ea3e re PR middle-end/85195 (ICE: verify_gimple failed: non-trivial conversion at assignment with -O -fno-tree-ccp --param=sccvn-max-scc-size=10)
PR middle-end/85195
	* match.pd (BIT_FIELD_REF CONSTRUCTOR@0 @1 @2): Use view_convert around
	CONSTRUCTOR_ELT (ctor, ...)->value.

	* gcc.dg/pr85195.c: New test.

From-SVN: r259149
2018-04-05 20:35:16 +02:00
H.J. Lu
520a02b6fa Use dlsym to check if libdl is needed for plugin
config/plugins.m4 has

 if test "$plugins" = "yes"; then
    AC_SEARCH_LIBS([dlopen], [dl])
  fi

Plugin uses dlsym, but libasan.so only intercepts dlopen, not dlsym:

[hjl@gnu-tools-1 binutils-text]$ nm -D /lib64/libasan.so.4| grep " dl"
0000000000038580 W dlclose
                 U dl_iterate_phdr
000000000004dc50 W dlopen
                 U dlsym
                 U dlvsym
[hjl@gnu-tools-1 binutils-text]$

Testing dlopen for libdl leads to false negative when -fsanitize=address
is used.  It results in link failure:

../bfd/.libs/libbfd.a(plugin.o): undefined reference to symbol 'dlsym@@GLIBC_2.16'

dlsym should be used to check if libdl is needed for plugin.

	PR gas/22318
	* plugins.m4 (AC_PLUGINS): Use dlsym to check if libdl is needed.

From-SVN: r259140
2018-04-05 10:49:39 -07:00
Jason Merrill
da0c07b20f PR c++/83808 - ICE with VLA initialization.
* typeck2.c (process_init_constructor_array): Don't require a VLA
	initializer to have VLA type.

From-SVN: r259138
2018-04-05 13:17:11 -04:00
Paolo Carlini
61f84e25f6 re PR c++/80956 (ICE with abstract class vector)
/cp
2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/80956
	* call.c (convert_like_real): Fail gracefully for a broken
	std::initializer_list, missing a definition.

	* name-lookup.c (do_pushtag): Tweak message, use %< and %>.

/testsuite
2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/80956
	* g++.dg/cpp0x/initlist100.C: New.
	* g++.dg/cpp0x/initlist101.C: Likewise.

From-SVN: r259137
2018-04-05 17:08:21 +00:00
Paolo Carlini
3b4a12aa8a re PR c++/84792 (ICE with broken typedef of a struct)
/cp
2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84792
	* decl.c (grokdeclarator): Fix diagnostic about typedef name used
	as nested-name-specifier, keep type and TREE_TYPE (decl) in sync.

/testsuite
2018-04-05  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84792
	* g++.dg/other/pr84792-1.C: New.
	* g++.dg/other/pr84792-2.C: Likewise.

From-SVN: r259136
2018-04-05 17:05:03 +00:00
Jonathan Wakely
970d3d9011 Add another workaround to std::variant for Clang bug 31852
* include/std/variant (_VARIANT_RELATION_FUNCTION_TEMPLATE): Qualify
	__get calls to avoid ADL and avoid ambiguity due to Clang bug.

From-SVN: r259135
2018-04-05 17:59:13 +01:00
Uros Bizjak
b5f3bb7b5f re PR target/85193 (ICE: SIGSEGV in memory_operand at recog.c:1361 with -O2 -fno-tree-ccp -fno-tree-fre -mno-sse)
PR target/85193
	* config/i386/i386.md (define_attr "memory"): Handle rotate1 type.

testsuite/ChangeLog:

	PR target/85193
	* gcc.target/i386/pr85193.c: New test.

From-SVN: r259134
2018-04-05 18:50:49 +02:00
Jason Merrill
be9d76c5bf PR c++/82152 - ICE with class deduction and inherited ctor.
* pt.c (do_class_deduction): Ignore inherited ctors.

From-SVN: r259133
2018-04-05 12:42:09 -04:00
Jason Merrill
68218b64ed PR c++/84665 - ICE with array of empty class.
* decl2.c (cp_check_const_attributes): Use fold_non_dependent_expr.

From-SVN: r259132
2018-04-05 12:04:08 -04:00
Jason Merrill
4cbe585c99 PR c++/85228 - ICE with lambda in enumerator.
* pt.c (bt_instantiate_type_proc): Don't assume
	CLASSTYPE_TEMPLATE_INFO is non-null.

From-SVN: r259130
2018-04-05 10:48:40 -04:00
Ville Voutilainen
9aee04a4c0 Implement P0969
gcc/cp

Implement P0969
* decl.c (find_decomp_class_base): Check accessibility instead
of declared access, adjust diagnostic.

testsuite/

Implement P0969
* g++.dg/cpp1z/decomp4.C: Adjust.
* g++.dg/cpp1z/decomp38.C: New.

From-SVN: r259129
2018-04-05 17:43:55 +03:00
Ville Voutilainen
0fb90182d8 Implement P0961
gcc/cp

Implement P0961
* decl.c (get_tuple_decomp_init): Check the templatedness
of a member get.

testsuite/

Implement P0961
* g++.dg/cpp1z/decomp10.C: Adjust.
* g++.dg/cpp1z/decomp37.C: New.

From-SVN: r259128
2018-04-05 17:37:18 +03:00
Jason Merrill
e99d77c97f PR c++/85200 - ICE with constexpr if in generic lambda.
* pt.c (extract_locals_r): Don't record the local specs of variables
	declared within the pattern.

From-SVN: r259127
2018-04-05 10:20:53 -04:00
Tom de Vries
2ba16fd2eb [nvptx] Fix neutering of bb with only cond jump
2018-04-05  Tom de Vries  <tom@codesourcery.com>

	PR target/85204
	* config/nvptx/nvptx.c (nvptx_single): Fix neutering of bb with only
	cond jump.

	* testsuite/libgomp.oacc-c-c++-common/broadcast-1.c: New test.

From-SVN: r259125
2018-04-05 08:36:37 +00:00
Alexandre Oliva
44780b91eb [PR c++/84979] reject auto in explicit tmpl args for tmpl-fn
With concepts, we accept auto in explicit template arguments, but we
should only accept them for template classes.  Passing them to
template functions or variables is not allowed.  So, reject it, at
parse time if possible, at specialization time otherwise.


for  gcc/cp/ChangeLog

	PR c++/84979
	* pt.c (check_auto_in_tmpl_args): New.
	(tsubst_qualified_id): Use it to reject template args
	referencing auto for non-type templates.
	* parser.c (cp_parser_template_id): Likewise.
	* cp-tree.h (check_auto_in_tmpl_args): Declare.
	* typeck2.c (build_functional_cast): Report correct location
	for invalid use of auto.

for  gcc/testsuite/ChangeLog

	PR c++/84979
	* g++.dg/concepts/pr84979.C: New.
	* g++.dg/concepts/pr84979-2.C: New.
	* g++.dg/concepts/pr84979-3.C: New.

From-SVN: r259124
2018-04-05 04:26:36 +00:00
Jason Merrill
da0c8d9793 PR c++/85215 - ICE with copy-init from conversion.
* call.c (merge_conversion_sequences): Fix type of direct binding
	sequence.

From-SVN: r259123
2018-04-05 00:01:15 -04:00
Shiva Chen
67e1eb3d2d [NDS32] Fine-tune memory address type.
gcc/
	* config/nds32/constraints.md (U33): Fine-tune checking condition.
	* config/nds32/nds32-md-auxiliary.c (nds32_mem_format): Ditto.
	* config/nds32/nds32.h (nds32_16bit_address_type): Add
	ADDRESS_POST_MODIFY_LO_REG_IMM3U.

Co-Authored-By: Kito Cheng <kito.cheng@gmail.com>

From-SVN: r259122
2018-04-05 03:35:28 +00:00
Shiva Chen
8656bbcff8 [NDS32] Add constraint for lwi45.fe instruction.
gcc/
	* config/nds32/constraints.md (Ufe): New memory constraint.
	* config/nds32/nds32-md-auxiliary.c (nds32_mem_format,
	nds32_output_16bit_load): Consider r8 register for lwi45.fe format.
	* config/nds32/nds32.c (nds32_print_operand): Output lwi45.fe
	operands.
	* config/nds32/nds32.h (nds32_16bit_address_type): Add ADDRESS_R8_IMM7U.
	* config/nds32/nds32.md (*mov<mode>): Adjust pattern.

Co-Authored-By: Kito Cheng <kito.cheng@gmail.com>

From-SVN: r259121
2018-04-05 03:25:20 +00:00
Chung-Ju Wu
b9774a97af [NDS32] Generate alu-shift instructions only for -Os.
gcc/
	* config/nds32/nds32.md: Use optimize_size in the condition for
	alu-shift instructions.

From-SVN: r259120
2018-04-05 03:10:42 +00:00
Chung-Ju Wu
50ea1e4ad5 [NDS32] Add divsi4 and udivsi4 patterns.
gcc/
	* config/nds32/nds32.md (divsi4, udivsi4): New patterns.

From-SVN: r259119
2018-04-05 03:05:45 +00:00
Chung-Ju Wu
3fbbd9e5ad [NDS32] Refine negsi2 pattern.
gcc/
	* config/nds32/nds32.md (negsi2): Refine pattern.

From-SVN: r259118
2018-04-05 02:58:19 +00:00
Kito Cheng
a3b13564bf [NDS32] Refine bit-wise operation and shift patterns.
gcc/
	* config/nds32/iterators.md (shift_rotate): New code iterator.
	(shift): New code attribute.
	* config/nds32/nds32-md-auxiliary.c (nds32_expand_constant): New.
	* config/nds32/nds32-protos.h (nds32_expand_constant): Declare.
	* config/nds32/nds32.c (nds32_print_operand): Deal with more cases.
	* config/nds32/nds32.md (addsi3, *add_srli): Refine implementation for
	bit-wise operations.
	(andsi3, *andsi3): Ditto.
	(iorsi3, *iorsi3, *or_slli, *or_srli): Ditto.
	(xorsi3, *xorsi3, *xor_slli, *xor_srli): Ditto.
	(<shift>si3, *ashlsi3, *ashrsi3, *lshrsi3, *rotrsi3): Ditto.
	* config/nds32/predicates.md (nds32_rimm5u_operand, nds32_and_operand,
	nds32_ior_operand, nds32_xor_operand): New predicates.

Co-Authored-By: Chung-Ju Wu <jasonwucj@gmail.com>

From-SVN: r259117
2018-04-05 02:51:45 +00:00
Chung-Ju Wu
5c36be5733 [NDS32] The add and sub pattens should only accept si mode.
gcc/
	* config/nds32/nds32.md (add<mode>3, sub<mode>3): Rename to ...
	(addsi3, subsi3): ... this.

From-SVN: r259116
2018-04-05 02:23:19 +00:00