- 23 Mar, 2018 20 commits
-
-
re PR c++/85015 (internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark) in build_int_cst, at tree.c:1360) PR c++/85015 * decl.c (compute_array_index_type): Set osize to mark_rvalue_use result. * g++.dg/cpp0x/pr85015.C: New test. From-SVN: r258822
Jakub Jelinek committed -
re PR c++/84942 (internal compiler error: in fold_convert_const_int_from_real, at fold-const.c:2011) PR c++/84942 * pt.c (tsubst_copy_and_build) <case FIX_TRUNC_EXPR>: Replace cp_build_unary_op call with gcc_unreachable (). * g++.dg/cpp1y/pr84942.C: New test. From-SVN: r258821
Jakub Jelinek committed -
2018-03-23 Vladimir Makarov <vmakarov@redhat.com> PR inline-asm/85030 * lra-constraints.c (process_alt_operands): Don't match BLKmode and non BLKmode operands. 2018-03-23 Vladimir Makarov <vmakarov@redhat.com> PR inline-asm/85030 * testsuite/gcc.target/i386/pr85030.c: New. From-SVN: r258820
Vladimir Makarov committed -
This bug has been reported against GCC 7.3.0 but it is latent in all release branches and on trunk. We underestimate the length of the LRSH instruction in Thumb state. Unlike other load instructions LDRSH can be encoded in 16 bits only when using a register offset. In the testcase we have "ldrsh r2, [r4]" being assigned a length of 2, which is wrong. So we don't calculate branch ranges properly and cause the assembler error. The fix is to make the unaligned_loadhis insn similar to the *arm_extendqihi_insn insn that outputs an LDRSB. Just remove the wrong 2-byte alternative. I don't think this is worth inventing a new "register-offset-only" constraint. This also makes the patch safer for backporting. Bootstrapped and tested on arm-none-linux-gnueabihf. PR target/85026 * config/arm/arm.md (unaligned_loadhis): Remove first alternative. Clean up attributes. * g++.dg/pr85026.C: New test. From-SVN: r258818
Kyrylo Tkachov committed -
From-SVN: r258816
David Edelsohn committed -
*** gcc/testsuite/ChangeLog *** 2018-03-23 Sudakshina Das <sudi.das@arm.com> PR target/84826 * gcc.target/arm/pr84826.c: Add dg directive. From-SVN: r258805
Sudakshina Das committed -
re PR c++/85045 (ICE+SIGILL on valid C++ code: cxx_pretty_printer::postfix_expression(tree_node*) (), at cp/cxx-pretty-print.c:482) PR c++/85045 * c-pretty-print.c (c_pretty_printer::multiplicative_expression) <case RDIV_EXPR>: Tweak condition. * cxx-pretty-print.c (cxx_pretty_printer::multiplicative_expression): Handle EXACT_DIV_EXPR and RDIV_EXPR. Tweak condition. (cxx_pretty_printer::expression): Handle EXACT_DIV_EXPR and RDIV_EXPR. * g++.dg/cpp0x/Wnarrowing5.C: New test. * gcc.dg/pr85045.c: New test. From-SVN: r258804
Marek Polacek committed -
* parser.c (cp_parser_perform_range_for_lookup): Change the condition for deciding whether to use members. From-SVN: r258803
Ville Voutilainen committed -
PR c++/85033 * semantics.c (finish_offsetof): Don't allow CONST_DECLs. * g++.dg/ext/builtin-offsetof2.C: New test. From-SVN: r258801
Marek Polacek committed -
re PR bootstrap/85020 (gcc fails to bootstrap with profiledbootstrap and --with-build-config=bootstrap-lto) 2018-03-23 Eric Botcazou <ebotcazou@adacore.com> PR debug/85020 * gnat.dg/lto22.adb: New test. * gnat.dg/lto22_pkg1.ad[sb]: New helper. * gnat.dg/lto22_pkg2.ads: Likewise. From-SVN: r258799
Eric Botcazou committed -
re PR bootstrap/85020 (gcc fails to bootstrap with profiledbootstrap and --with-build-config=bootstrap-lto) 2018-03-23 Richard Biener <rguenther@suse.de> PR debug/85020 * dwarf2out.c (rtl_for_decl_location): Do not generate RTL early when we are going to emit early debug for LTO. From-SVN: r258798
Richard Biener committed -
PR c/80778 * gcc.dg/lto/pr80778_0.c: New test. From-SVN: r258797
Jakub Jelinek committed -
re PR inline-asm/85034 (-O1 internal compiler error: in elimination_costs_in_insn, at reload1.c:3633) PR inline-asm/85034 * function.c (match_asm_constraints_1): Don't optimize if input doesn't satisfy general_operand predicate for output's mode. * gcc.target/i386/pr85034.c: New test. From-SVN: r258796
Jakub Jelinek committed -
PR inline-asm/85022 * alias.c (write_dependence_p): Don't require for x_canonicalized non-VOIDmode if x has VOIDmode. * c-c++-common/torture/pr85022.c: New test. From-SVN: r258795
Jakub Jelinek committed -
re PR sanitizer/85029 (-fsanitize=undefined internal compiler error: in maybe_optimize_ubsan_ptr_ifn, at sanopt.c:493) PR sanitizer/85029 * sanopt.c (maybe_optimize_ubsan_ptr_ifn): If DECL_REGISTER (base), just don't try to optimize it rather than assert it never happens. * g++.dg/ubsan/pr85029.C: New test. From-SVN: r258794
Jakub Jelinek committed -
Check that template using decls have the correct number of parm lists. for gcc/cp/ChangeLog PR c++/71251 * parser.c (cp_parser_alias_declaration): Call parser_check_template_parameters. for gcc/testsuite/ChangeLog PR c++/71251 * g++.dg/cpp0x/pr71251.C: New. From-SVN: r258793
Alexandre Oliva committed -
Although resolve_typename_type always takes a template-dependent type-id, and it usually resolves it to another template-dependent type-id, it is not correct to require the latter: in declarators, template-dependent scopes may turn out to name template-independent types, as in the pr84789-2.C and pr84789-3.C testcases. The ill-formed testcase pr84789.C trips the same too-strict assert, and also gets fixed by removing the assertion on the simplified scope. However, whereas when the dependent type cannot be resolved, we get an error that suggests 'typename' is missing: pr84789.C:12:3: error: need ‘typename’ before ‘typename B<T>::A::I::I’ because ‘typename B<T>::A::I’ is a dependent scope B<T>::A::I::I i; ^~~~ when it can, we got errors that did not point at that possibility, which may be confusing: pr84789.C:9:15: error: ‘A::I’ {aka ‘int’} is not a class type B<T>::A::I::I i; // { dg-error "typename" } ^ pr84789.C:9:15: error: ‘I’ in ‘A::I’ {aka ‘int’} does not name a type Changing the parser diagnostic code that reports an invalid type name so that it does not attempt to reparse the name as a declarator gets us the superior diagnostic of a missing 'typename' keyword. for gcc/cp/ChangeLog PR c++/84789 * pt.c (resolve_typename_type): Drop assert that stopped simplification to template-independent types. Add assert to verify the initial scope is template dependent. * parser.c (cp_parser_parse_and_diagnose_invalid_type_name): Reparse the id expression as a type-name, not a declarator. for gcc/testsuite/ChangeLog PR c++/84789 * g++.dg/template/pr84789.C: New. * g++.dg/template/pr84789-2.C: New. * g++.dg/template/pr84789-3.C: New. * g++.dg/parse/dtor11.C: Accept alternate error message. From-SVN: r258792
Alexandre Oliva committed -
A parenthesized initializer was only accepted when new()ing an array in permissive mode. We were not careful, however, to convert the TREE_LIST initializer to the array element type in this extension. Instead of fixing it, converting the initializer to the base type after turning the TREE_LIST initializer to a compound_expr, we disable this deprecated extension. for gcc/cp/ChangeLog PR c++/84729 * init.c (build_vec_init): Error at parenthesized array init. for gcc/testsuite/ChangeLog PR c++/84729 * g++.dg/pr84729.C: New. * g++.old-deja/g++.ext/arrnew2.C: Require error. * g++.old-deja/g++.robertl/eb58.C: Likewise. * g++.old-deja/g++.robertl/eb63.C: Likewise. From-SVN: r258791
Alexandre Oliva committed -
We don't want functions to become implicit templates just because of random uses of auto in unexpected places. Disabling the special handling of auto while parsing attributes, for example, makes for more sensible errors. for gcc/cp/ChangeLog PR c++/84610 PR c++/84642 PR c++/84942 * cp-tree.h (temp_override): New template class, generalizing a cleanup that was only used... * parser.c (cp_parser_parameter_declaration_clause): ... here for auto_is_implicit_function_template_parm_p. (cp_parser_gnu_attributes_opt): Use it here as well. (cp_parser_std_attribute): Likewise. From-SVN: r258790
Alexandre Oliva committed -
From-SVN: r258789
GCC Administrator committed
-
- 22 Mar, 2018 15 commits
-
-
re PR fortran/84922 (fortran reports inconsistency in rank of arguments in interface and contained procedures) 2018-03-22 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/84922 * decl.c (get_proc_name): If the MODULE prefix appears in interface body, then it must appear on the contained subroutine or function. While here, fix nearby mis-indented code. 2018-03-22 Steven G. Kargl <kargl@gcc.gnu.org PR fortran/84922 * gfortran.dg/interface_42.f90: New test. * gfortran.dg/interface_43.f90: New test. From-SVN: r258784
Steven G. Kargl committed -
gcc/ChangeLog: 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org> * config/rs6000/rs6000-builtin.def: Remove various BU_ALTIVEC_X macro expansions for definition of ST_INTERNAL_<mode> and LD_INTERNAL_<mode> builtins. * config/rs6000/rs6000-protos.h (rs6000_address_for_altivec): Remove prototype. * config/rs6000/rs6000.c (altivec_expand_ld_builtin): Delete this function. (altivec_expand_st_builtin): Likewise. (altivec_expand_builtin): Remove calls to deleted functions. (rs6000_address_for_altivec): Delete this function. * config/rs6000/vector.md: Remove expands for vector_altivec_load_<mode> and vector_altivec_store_<mode>. From-SVN: r258783
Kelvin Nilsen committed -
arm-linux-gnueabi The ICE in the bug report was happening because the macro USE_RETURN_INSN (FALSE) was returning different values at different points in the compilation. This was internally occurring because the function arm_compute_static_chain_stack_bytes () which was dependent on arm_r3_live_at_start_p () was giving a different value after the cond_exec instructions were created in ce3 causing the liveness of r3 to escape up to the start block. The function arm_compute_static_chain_stack_bytes () should really only compute the value once duringepilogue/prologue stage. This pass introduces a new member 'static_chain_stack_bytes' to the target definition of the struct machine_function which gets calculated in expand_prologue and is the value that is returned by arm_compute_static_chain_stack_bytes () beyond that. ChangeLog entries: *** gcc/ChangeLog *** 2018-03-22 Sudakshina Das <sudi.das@arm.com> PR target/84826 * config/arm/arm.h (machine_function): Add static_chain_stack_bytes. * config/arm/arm.c (arm_compute_static_chain_stack_bytes): Avoid re-computing once computed. (arm_expand_prologue): Compute machine->static_chain_stack_bytes. (arm_init_machine_status): Initialize machine->static_chain_stack_bytes. *** gcc/testsuite/ChangeLog *** 2018-03-22 Sudakshina Das <sudi.das@arm.com> PR target/84826 * gcc.target/arm/pr84826.c: New test. From-SVN: r258777
Sudakshina Das committed -
2018-03-22 Christophe Lyon <christophe.lyon@linaro.org> gcc/testsuite/ * gcc.target/arm/addr-modes-float.c: Move dg-do before dg-require-effective-target. * gcc.target/arm/addr-modes-int.c: Likewise. * gcc.target/nios2/lo-addr-tls.c: Likewise. From-SVN: r258776
Christophe Lyon committed -
gcc/ChangeLog: 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org> PR target/84760 * doc/extend.texi: Add four new prototypes for vec_ld. * config/rs6000/rs6000-builtin.def (LVX_V1TI): Reorder symbol definitions for more logical presentation. * config/rs6000/rs6000-c.c: (altivec_overloaded_builtins): Add entries for V1TI variants of __builtin_altivec_ld builtin. * config/rs6000/rs6000.c: (altivec_expand_lv_builtin): Add test and handling of V1TI variant of LVX icode pattern. (altivec_expand_builtin): Add case for ALTIVEC_BUILTIN_LVX_V1TI. (rs6000_gimple_fold_builtin): Likewise. (altivec_init_builtins): Add code to define __builtin_altivec_lvx_v1ti function. gcc/testsuite/ChangeLog: 2018-03-22 Kelvin Nilsen <kelvin@gcc.gnu.org> PR target/84760 * gcc.target/powerpc/altivec-ld-1.c: New test. From-SVN: r258774
Kelvin Nilsen committed -
PR libstdc++/85040 * include/bits/stl_function.h (greater::__not_overloaded) (less::__not_overloaded, greater_equal::__not_overloaded) (less_equal::__not_overloaded): Fix ambiguous specializations. * testsuite/20_util/function_objects/comparisons_pointer.cc: Add tests for type with overlaoded operators. From-SVN: r258773
Jonathan Wakely committed -
gcc/testsuite * gcc.dg/graphite/pr83126.c: Require pthread for the test. From-SVN: r258768
Bin Cheng committed -
PR libstdc++/77691 * testsuite/experimental/memory_resource/resource_adaptor.cc: xfail execution on 32-bit Solaris/x86. From-SVN: r258766
Rainer Orth committed -
re PR inline-asm/84941 (internal compiler error: in reg_overlap_mentioned_p, at rtlanal.c:1870 (reg_overlap_mentioned_p()/match_asm_constraints_1())) PR inline-asm/84941 * function.c (match_asm_constraints_1): Don't do the optimization if input isn't a REG, SUBREG, MEM or constant. * gcc.dg/pr84941.c: New test. From-SVN: r258764
Jakub Jelinek committed -
PR target/85025 * config/i386/shadow-stack-unwind.h (_Unwind_Frames_Extra): Fix a typo, tmp => 255. From-SVN: r258763
Igor Tsimbalist committed -
2018-03-22 Tom de Vries <tom@codesourcery.com> PR tree-optimization/84956 * tree-ssa-tail-merge.c (find_clusters_1): Skip bbs with bb_has_abnormal_pred. * gcc.dg/pr84956.c: New test. From-SVN: r258758
Tom de Vries committed -
PR sanitizer/85018 * dwarf2asm.c (dw2_output_indirect_constant_1): Set DECL_INITIAL (decl) to decl at the end. * varasm.c (use_blocks_for_decl_p): Revert the 2018-03-20 change, adjust the comment. From-SVN: r258757
Jakub Jelinek committed -
re PR c++/84854 (ICE: unexpected expression in cxx_eval_constant_expression, at cp/constexpr.c:4774) PR c++/84854 * semantics.c (finish_if_stmt_cond): Check if the type of the condition is boolean. * g++.dg/cpp1z/constexpr-if15.C: New test. * g++.dg/cpp1z/constexpr-if16.C: New test. From-SVN: r258756
Marek Polacek committed -
* call.c (build_user_type_conversion_1): Remove C++17 code. (conv_binds_ref_to_prvalue): New. (build_over_call): Handle C++17 copy elision. (build_special_member_call): Only do C++17 copy elision here if the argument is already the right type. From-SVN: r258755
Jason Merrill committed -
From-SVN: r258754
GCC Administrator committed
-
- 21 Mar, 2018 5 commits
-
-
When adding __builtin_tgmath to support a better tgmath.h implementation, I noted that further changes might be needed regarding the TS 18661 functions that round their results to a narrower type, because of unresolved issues with how the corresponding type-generic macros are defined in TS 18661. The resolution of those issues is still in flux, but the latest version does indeed require something slightly different from __builtin_tgmath. It specifies that integer arguments to type-generic macros such as f32xadd are treated as _Float64 not double - which was also present in earlier versions of the resolution - but then it also specifies different handling for _Float64 arguments and double arguments, which wasn't in earlier versions. Specifically, in the latest version <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2213.pdf>, f32xadd with _Float64 arguments would call f32xaddf64, while f32xadd with double arguments would call f32xaddf64x. Since integer arguments are converted directly to the argument type of the selected function (not to double / _Float64x unless that ends up as the argument type), this is a user-visible difference in semantics that means __builtin_tgmath actually needs to implement treating integer arguments as _Float64 in this case (the rest of the latest semantics can then be implemented in the header, with a few inline functions there). To avoid releasing with the older version of the __builtin_tgmath semantics that doesn't work with the latest proposed DR#13 resolution, this patch implements a rule in __builtin_tgmath that maps integer types to _Float64 (respectively _Complex _Float64 for complex integer types) where all the specified functions return the same _FloatN or _FloatNx type. This does not affect any existing uses of __builtin_tgmath in glibc's or GCC's tgmath.h since I haven't yet added any of these type-generic macros to glibc when adding the corresponding narrowing functions. Bootstrapped with no regressions on x86_64-pc-linux-gnu. * doc/extend.texi (__builtin_tgmath): Document when complex integer types are treated as _Complex _Float64. gcc/c: * c-parser.c (c_parser_postfix_expression): For __builtin_tgmath where all functions return the same _FloatN or _FloatNx type, treat integer types as _Float64 instead of double. gcc/testsuite: * gcc.dg/builtin-tgmath-3.c: New test. From-SVN: r258751
Joseph Myers committed -
2018-03-21 Tom de Vries <tom@codesourcery.com> * doc/extend.texi (__builtin_extend_pointer): Remove pasto. From-SVN: r258750
Tom de Vries committed -
We shouldn't substitute templates into short-circuited-out concepts constraints, but we do, and to add insult to injury, we issue a sorry() error when a concept that shouldn't even have been substituted attempts to perform a multi-dimensional array initialization with a new{} expression. Although fixing the requirements short-circuiting is probably too risky at this point, we can get closer to the intended effect by silencing that sorry just as we silence other errors. for gcc/cp/ChangeLog PR c++/71965 * init.c (build_vec_init): Silence error, former sorry, without tf_error. for gcc/testsuite/ChangeLog PR c++/71965 * g++.dg/concepts/pr71965.C: New. From-SVN: r258749
Alexandre Oliva committed -
If we get a parse error during an attempted fully implicit function template parse, and need to skip to the end of the statement or block, we may discard the function parms scope rather than the enclosing injected implicit template parms scope. If we rollback a tentative parse and try something else, we'll no longer be in a function parms scope, but rather in a template parms scope, but we may still attempt to synthesize implicit template parms and then fail the assert that checks we're in a function parms scope. This patch introduces an alternative to finish_fully_implicit_template_p, to be used during error recovery, that floats the implicit template parm scope to the top so that it gets discarded as we finish and discard the failed implicit template data, while other scopes are retained as expected. It also clears the implicit template parser data as we finish the template, so that it doesn't linger on referencing discarded or used scopes and parms. for gcc/cp/ChangeLog PR c++/84610 PR c++/84642 * parser.c (abort_fully_implicit_template_p): New. (cp_parser_skip_to_end_of_statement): Use it. (cp_parser_skip_to_end_of_block_or_statement): Likewise. (finish_fully_implicit_template_p): Clear implicit_template_parms and implicit_template_scope. for gcc/testsuite/ChangeLog PR c++/84610 PR c++/84642 * g++.dg/cpp0x/pr84610.C: New. * g++.dg/cpp0x/pr84642.C: New. From-SVN: r258748
Alexandre Oliva committed -
PR c/84999 * c-typeck.c (build_binary_op): If c_common_type_for_size fails when building vector comparison, diagnose it and return error_mark_node. * c-c++-common/pr84999.c: New test. From-SVN: r258747
Jakub Jelinek committed
-