* typeck2.c (process_init_constructor_record): Use
init_list_type_node for the CONSTRUCTOR around an anonymous union
designated initializer.
From-SVN: r258982
PR c++/84791
* semantics.c (finish_omp_reduction_clause): If
OMP_CLAUSE_REDUCTION_PLACEHOLDER is error_mark_node, return true
even if processing_template_decl.
* g++.dg/gomp/pr84791.C: New test.
From-SVN: r258981
2018-03-30 Bill Schmidt <wschmidt@linux.ibm.com>
* MAINTAINERS: Update my email address and disambiguate myself
a bit from Will Schmidt.
From-SVN: r258980
2018-03-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84931
* simplify.c (gfc_convert_constant): Handle case of array
constructors within an array that has no iterator and improve
the conciseness of this section of code.
2018-03-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84931
* gfortran.dg/array_constructor_53.f90: New test.
From-SVN: r258977
2017-03-30 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/85111
* array.c (gfc_resolve_character_array_constructor): Early
exit for zero-size arrays.
* simplify.c (simplify_transformation_to_array): Exit early
if the result size is zero.
(simplify_minmaxloc_to_array): Likewise.
2017-03-30 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/85111
* gfortran.dg/zero_sized_10.f90: New test.
Add ChangeLog entries for r258973.
From-SVN: r258974
2017-03-30 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/85111
* array.c (gfc_resolve_character_array_constructor): Early
exit for zero-size arrays.
* simplify.c (simplify_transformation_to_array): Exit early
if the result size is zero.
(simplify_minmaxloc_to_array): Likewise.
2017-03-30 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/85111
* gfortran.dg/zero_sized_10.f90: New test.
From-SVN: r258973
PR c++/84269 reports a number of names in the C and C++ standard
libraries for which we don't yet offer #include fix-it hints.
This patch adds them (up to comment #9).
gcc/c-family/ChangeLog:
PR c++/84269
* known-headers.cc (get_stdlib_header_for_name): Add various names
from <assert.h>, <string.h>, and <memory.h>; add more names from
<stdio.h>.
gcc/cp/ChangeLog:
PR c++/84269
* name-lookup.c (get_std_name_hint): Add names from <memory>,
<tuple>, and <utility>.
gcc/testsuite/ChangeLog:
PR c++/84269
* g++.dg/lookup/missing-std-include-6.C: New test.
* g++.dg/lookup/missing-std-include.C: Add std::pair and
std::tuple tests.
* g++.dg/spellcheck-reswords.C: Expect a hint about <cstring>.
* g++.dg/spellcheck-stdlib.C: Add tests for names in <cstdio>,
<cstring>, <cassert>, and <cstdlib>.
From-SVN: r258966
As of r256448, the C++ frontend underlines many bad arguments in its
diagnostics; those where perform_overload_resolution returns a
non-NULL candidate, but there's a failure in convert_like_real.
However, for the case where perform_overload_resolution fails, but
there's a single non-viable candidate, the error is diagnosed by
cp_build_function_call_vec, and that currently doesn't underline
the bad argument:
$ cat test.cc
void callee (int one, const char **two, int three);
void
caller (const char *fmt)
{
callee (1, fmt, 3);
}
We emit:
$ g++ test.cc
test.cc: In function 'void caller(const char*)':
test.cc:6:20: error: cannot convert 'const char*' to 'const char**' for argument '2' to 'void callee(int, const char**, int)'
callee (1, fmt, 3);
^
It's going through convert_for_assignment, and
implicitly using input_location.
This patch updates convert_for_assignment for this case, using
an EXPR_LOCATION if there is one, or falling back to input_location
otherwise, underlining the argument in question:
test.cc: In function 'void caller(const char*)':
test.cc:6:14: error: cannot convert 'const char*' to 'const char**' for argument '2' to 'void callee(int, const char**, int)'
callee (1, fmt, 3);
^~~
gcc/cp/ChangeLog:
PR c++/85110
* typeck.c (convert_for_assignment): When complaining due to
conversions for an argument, attempt to use the location of the
argument.
gcc/testsuite/ChangeLog:
PR c++/85110
* g++.dg/diagnostic/param-type-mismatch-2.C: New test.
From-SVN: r258957
Enable AVX and AVX512 features only if their states are supported by
OSXSAVE.
PR target/85100
* config/i386/cpuinfo.c (XCR_XFEATURE_ENABLED_MASK): New.
(XSTATE_FP): Likewise.
(XSTATE_SSE): Likewise.
(XSTATE_YMM): Likewise.
(XSTATE_OPMASK): Likewise.
(XSTATE_ZMM): Likewise.
(XSTATE_HI_ZMM): Likewise.
(XCR_AVX_ENABLED_MASK): Likewise.
(XCR_AVX512F_ENABLED_MASK): Likewise.
(get_available_features): Enable AVX and AVX512 features only
if their states are supported by OSXSAVE.
From-SVN: r258954
2018-03-29 Martin Liska <mliska@suse.cz>
PR lto/84995.
* doc/invoke.texi: Document how LTO works with debug info.
Describe auto-load support of binutils. Mention 'x86-64'
as valid option value of -march option.
From-SVN: r258953
PR c/85094
* fold-const.c (operand_equal_p): Handle DEBUG_BEGIN_STMT.
For STATEMENT_LIST, pass down OEP_LEXICOGRAPHIC and maybe
OEP_NO_HASH_CHECK for recursive call, to avoid exponential
checking.
* c-c++-common/Wduplicated-branches-14.c: New test.
From-SVN: r258950
gcc/ChangeLog:
2018-03-20 Carl Love <cel@us.ibm.com>
Revert
2017-09-27 Carl Love <cel@us.ibm.com>
* config/rs6000/rs6000-builtin.def (BU_FP_1MISC_1): Add define macro.
(FCTID, FCTIW): Add BU_FP_MISC_1 macro expansion for builtins.
* config/rs6000/rs6000.md (lrintsfsi2): Add define_insn for the
fctiw instruction.
gcc/testsuite/ChangeLog:
2018-03-20 Carl Love <cel@us.ibm.com>
Revert
2017-09-27 Carl Love <cel@us.ibm.com>
* gcc.target/powerpc/builtin-fctid-fctiw-runnable.c: New test file
for the __builtin_fctid and __builtin_fctiw.
From-SVN: r258942
/cp
2018-03-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/85028
* pt.c (tsubst_default_argument): Early return if the type of the
parameter is erroneous.
/testsuite
2018-03-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/85028
* g++.dg/other/default13.C: New.
From-SVN: r258932
PR tree-optimization/82004
* gimple-match-head.c (optimize_pow_to_exp): New function.
* match.pd (pow(C,x) -> exp(log(C)*x)): Wrap with #if GIMPLE.
Don't fold to exp if optimize_pow_to_exp is false.
* gcc.dg/pr82004.c: New test.
From-SVN: r258930
2018-03-28 Jakub Jelinek <jakub@redhat.com>
Martin Liska <mliska@suse.cz>
PR sanitizer/85081
* gimplify.c (asan_poison_variable): Don't do the check for
gimplify_omp_ctxp here.
(gimplify_decl_expr): Do it here.
(gimplify_target_expr): Likewise.
2018-03-28 Jakub Jelinek <jakub@redhat.com>
Martin Liska <mliska@suse.cz>
PR sanitizer/85081
* g++.dg/asan/pr85081.C: New test.
Co-Authored-By: Martin Liska <mliska@suse.cz>
From-SVN: r258924
2018-03-28 Martin Liska <mliska@suse.cz>
PR target/84988
* config/i386/i386.c (ix86_function_arg_advance): Do not call
chkp_type_bounds_count if MPX is not enabled.
From-SVN: r258923
When compiling with -fconcepts,
cp_parser_template_declaration_after_export calls
cp_parser_template_introduction and that preparses qualified-ids not
preceded by typename in such a way that, when we get to
cp_parser_parse_and_diagnose_invalid_type_name and then
cp_parser_diagnose_invalid_type_name, the nested name specifier no
longer carries the previous template-dependent context, so we don't
stand a chance to suggest the use of 'typename' any more. Thus,
tolerate in the testcase the poorer error messages we get.
for gcc/testsuite/ChangeLog
PR c++/84789
* g++.dg/template/pr84789.C: Adjust for testing with
-fconcepts too.
From-SVN: r258915
When an anon struct gets a name through a typedef, we reset its
linkage and that of its members. Member functions may get vague
linkage, which schedules them for deferred output, but we don't want
to add them to the queue if they're uninstantiated templates,
e.g. because the enclosing function is a template. They will be added
as needed when the enclosing template is instantiated.
for gcc/cp/ChangeLog
PR c++/84973
* decl2.c (note_vague_linkage_fn): Don't defer uninstantiated
templates.
for gcc/testsuite/ChangeLog
PR c++/84973
* g++.dg/template/pr84973.C: New.
* g++.dg/template/pr84973-2.C: New.
* g++.dg/template/pr84973-3.C: New.
From-SVN: r258914
We reject extended statement-expressions in template parameters, so we
might as well reject them in constant expressions used in noexcept
specifications.
for gcc/cp/ChangeLog
PR c++/84968
* tree.c (strip_typedefs_expr): Reject STATEMENT_LISTs.
for gcc/testsuite/ChangeLog
PR c++/84968
* g++.dg/eh/pr84968.C: New.
From-SVN: r258913
[gcc]
2018-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/84914
* config/rs6000/rs6000.c (create_complex_muldiv): New helper
function to create the function decl for complex long double
multiply and divide for -mabi=ieeelongdouble.
(init_float128_ieee): Call it.
[gcc/testsuite]
2018-03-27 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/84914
* gcc.target/powerpc/mulkc-2.c: New tests to make sure complex
long double multiply/divide uses the correct function.
* gcc.target/powerpc/mulkc-3.c: Likewise.
* gcc.target/powerpc/divkc-2.c: Likewise.
* gcc.target/powerpc/divkc-3.c: Likewise.
From-SVN: r258908
PR c++/85077
* cp-gimplify.c (cp_fold) <case CONSTRUCTOR>: For ctors with vector
type call fold to generate VECTOR_CSTs when possible.
* g++.dg/ext/vector35.C: New test.
From-SVN: r258903
PR c++/85061
* c-common.c (fold_offsetof_1) <case COMPOUND_EXPR>: Assert that
get_base_address of the second operand is a VAR_P, rather than the
operand itself, and use gcc_checking_assert instead of gcc_assert.
* g++.dg/ext/builtin-offsetof3.C: New test.
From-SVN: r258902
PR c++/85076
* tree.c (cp_build_reference_type): If to_type is error_mark_node,
return it right away.
* g++.dg/cpp1y/pr85076.C: New test.
From-SVN: r258901