Commit graph

151887 commits

Author SHA1 Message Date
Richard Biener
0c7247cc1e re PR tree-optimization/79276 (ICE: Segmentation fault in VRP pass)
2017-01-30  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/79276
	* tree-vrp.c (process_assert_insertions): Properly adjust common
	when removing a duplicate.

	* gcc.dg/torture/pr79276.c: New testcase.

From-SVN: r245026
2017-01-30 14:24:37 +00:00
Richard Biener
fcc216ec44 re PR tree-optimization/79256 (FAIL: gcc.dg/vect/pr25413a.c execution test)
2017-01-30  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/79256
	* targhooks.c (default_builtin_vector_alignment_reachable): Honor
	BIGGEST_FIELD_ALIGNMENT and ADJUST_FIELD_ALIGN to fix up bogus
	alignment on TYPE.
	* tree.c (build_aligned_type): Set TYPE_USER_ALIGN.

From-SVN: r245025
2017-01-30 13:52:44 +00:00
Ville Voutilainen
1dd9523917 Implement LWG 2825, LWG 2756 breaks class template argument deduction for optional.
* include/std/optional: Add a deduction guide.
* testsuite/20_util/optional/cons/deduction_guide.cc: New.

From-SVN: r245024
2017-01-30 15:37:16 +02:00
Szabolcs Nagy
87c45ec798 [ARM][PR target/78945] Fix libatomic on armv7-m
ARM libatomic inline asm uses sel, uadd8, uadd16 instructions
which are only available if __ARM_FEATURE_SIMD32 is defined.

libatomic/
2017-01-30  Szabolcs Nagy  <szabolcs.nagy@arm.com>

	PR target/78945
	* config/arm/exch_n.c (libat_exchange): Check __ARM_FEATURE_SIMD32.

From-SVN: r245023
2017-01-30 11:34:13 +00:00
Dominik Vogt
ab4be5d1be S/390: PR target/79240: Fix assertion in s390_extzv_shift_ok.
2017-01-30  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	PR target/79240
	* config/s390/s390.md ("*r<noxa>sbg_<mode>_srl_bitmask")
	("*r<noxa>sbg_<mode>_sll_bitmask")
	("*extzv_<mode>_srl<clobbercc_or_nocc>")
	("*extzv_<mode>_sll<clobbercc_or_nocc>"):
	Use contiguous_bitmask_nowrap_operand.

2017-01-30  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	PR target/79240
	* gcc.target/s390/pr79240.c: New test.

From-SVN: r245022
2017-01-30 09:54:58 +00:00
Bill Schmidt
6687d58dbc re PR target/79268 (Wrong code generation for vec_xl and vec_xst intrinsics)
[gcc]

2017-01-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	PR target/79268
	* config/rs6000/altivec.h (vec_xl): Revise #define.
	(vec_xst): Likewise.

[gcc/testsuite]

2017-01-29  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	PR target/79268
	* gcc.target/powerpc/pr79268.c: New file.
	* gcc.target/powerpc/vsx-elemrev-1.c: Delete file.
	* gcc.target/powerpc/vsx-elemrev-2.c: Likewise.
	* gcc.target/powerpc/vsx-elemrev-3.c: Likewise.
	* gcc.target/powerpc/vsx-elemrev-4.c: Likewise.

From-SVN: r245021
2017-01-30 03:32:59 +00:00
GCC Administrator
330f3bd7ff Daily bump.
From-SVN: r245020
2017-01-30 00:16:19 +00:00
Gerald Pfeifer
23075ebe11 * update-copyright.py: Fix the name of this script in examples.
From-SVN: r245017
2017-01-29 19:29:15 +00:00
GCC Administrator
aa88e6b299 Daily bump.
From-SVN: r245013
2017-01-29 00:16:15 +00:00
John David Anglin
fc34d7b8c8 trampoline4.adb: Skip on hppa*-*-*.
* gnat.dg/trampoline4.adb: Skip on hppa*-*-*.

From-SVN: r245010
2017-01-28 21:35:54 +00:00
Uros Bizjak
7b4bc98402 i386.c (print_reg): Use REGNO instead of true_regnum.
* config/i386/i386.c (print_reg): Use REGNO instead of true_regnum.

From-SVN: r245009
2017-01-28 19:43:56 +01:00
John David Anglin
9efc84e45e re PR testsuite/70583 (FAIL: g++.old-deja/g++.abi/vtable2.C -std=gnu++98 execution test)
PR testsuite/70583
	* g++.old-deja/g++.abi/vtable2.C: Adjust CMP_VPTR define on hppa.

From-SVN: r245007
2017-01-28 18:01:22 +00:00
John David Anglin
4bfbe3ae51 debug7.adb: Skip on hppa*-*-hpux*.
* gnat.dg/debug7.adb: Skip on hppa*-*-hpux*.
	* gnat.dg/debug9.adb: Likewise.

From-SVN: r245006
2017-01-28 17:30:50 +00:00
John David Anglin
8d0b306f50 pr78515.c: Add -fno-common option on hppa*-*-hpux*.
* gcc.dg/torture/pr78515.c: Add -fno-common option on hppa*-*-hpux*.

From-SVN: r245005
2017-01-28 17:19:09 +00:00
John David Anglin
b5df96c344 coarray_41.f90: Add "-latomic" option if libatomic_available.
* gfortran.dg/coarray_41.f90: Add "-latomic" option if
	libatomic_available.
	* gfortran.dg/coarray_42.f90: Likewise.
	* gfortran.dg/coarray_alloc_comp_3.f08: Likewise.
	* gfortran.dg/coarray_alloc_comp_4.f08: Likewise.
	* gfortran.dg/coarray_lib_alloc_4.f90: Likewise.

From-SVN: r245004
2017-01-28 17:00:33 +00:00
GCC Administrator
faa7e93c15 Daily bump.
From-SVN: r245002
2017-01-28 00:16:19 +00:00
Martin Sebor
eb33936649 builtin-sprintf-warn-1.c: Add test cases.
gcc/testsuite/ChangeLog:
	* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Add test cases.

From-SVN: r244999
2017-01-27 17:09:15 -07:00
Joseph Myers
1f44286be0 * sr.po: Update.
From-SVN: r244996
2017-01-27 23:34:48 +00:00
Bernd Schmidt
711ce02129 re PR rtl-optimization/79194 (ICE in rtl_verify_bb_insns, at cfgrtl.c:2661 (error: flow control insn inside a basic block))
2017-01-27  Bernd Schmidt  <bschmidt@redhat.com>

	PR rtl-optimization/79194
	* cprop.c (one_cprop_pass): Move deletion of code after unconditional
	traps before call to bypass_conditional_jumps.

	PR rtl-optimization/79194
	* gcc.dg/torture/pr79194.c: New test.

From-SVN: r244993
2017-01-27 12:40:44 -07:00
Vladimir Makarov
d8321b33d3 re PR rtl-optimization/71374 (ICE on valid code at -O1 and above on x86_64-linux-gnu: in extract_constrain_insn, at recog.c:2190)
2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>

	PR tree-optimization/71374
	* lra-constraints.c (check_conflict_input_operands): New.
	(match_reload): Use it.

2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>

	PR tree-optimization/71374
	* testsuite/gcc.target/i386/pr71374.c: New.

From-SVN: r244991
2017-01-27 18:08:14 +00:00
Martin Sebor
9e2ea13ec2 re PR c++/71290 (Flexible array member is not diagnosed with -pedantic)
PR c++/71290

gcc/testsuite/ChangeLog:
	* obj-c++.dg/property/at-property-23.mm: Remove an escaped newline from
	a dg-error directive.

From-SVN: r244990
2017-01-27 09:51:54 -07:00
Vladimir Makarov
9eb7045b54 re PR target/79131 (ICE: in extract_constrain_insn, at recog.c:2213, big-endian ARM)
2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/79131
	* lra-assigns.c (find_hard_regno_for_1): Take endianess for into
	account to calculate conflict_set.

2017-01-27  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/79131
	* gcc.target/arm/pr79131.c: Rename to gcc.target/arm/pr79131-1.c.
	* gcc.target/arm/pr79131-2.c: New.

From-SVN: r244989
2017-01-27 16:50:11 +00:00
Jason Merrill
20f058d098 PR c++/78771 - ICE with inherited constructor.
* call.c (build_over_call): Call deduce_inheriting_ctor here.
	* pt.c (tsubst_decl): Not here.
	* class.c (add_method): Or here.
	* method.c (deduce_inheriting_ctor): Handle clones.
	(implicitly_declare_fn): Don't deduce inheriting ctors yet.

From-SVN: r244988
2017-01-27 11:48:34 -05:00
Jonathan Wakely
a7d47f3526 PR libstdc++/79254 fix exception-safety in std::string::operator=
PR libstdc++/79254
	* config/abi/pre/gnu.ver: Add new symbols.
	* include/bits/basic_string.h [_GLIBCXX_USE_CXX11_ABI]
	(basic_string::_M_copy_assign): New overloaded functions to perform
	copy assignment.
	(basic_string::operator=(const basic_string&)): Dispatch to
	_M_copy_assign.
	* include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
	(basic_string::_M_copy_assign(const basic_string&, true_type)):
	Define, performing rollback on exception.
	* testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
	Test exception-safety guarantee.
	* testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
	Likewise.
	* testsuite/util/testsuite_allocator.h (uneq_allocator::swap): Make
	std::swap visible.

From-SVN: r244986
2017-01-27 16:17:04 +00:00
Bill Schmidt
f75bbf3fc6 re PR testsuite/65484 (FAIL: g++.dg/vect/pr36648.cc on powerpc64)
2017-01-27  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	PR target/65484
	* g++.dg/vect/pr36648.cc: Modify to reflect that the loop is not
	vectorized on POWER unless hardware misaligned loads are
	available.

From-SVN: r244985
2017-01-27 15:59:02 +00:00
Ian Lance Taylor
46f7b80ec4 compiler: let initializers hold addresses of fields
The runtime.dbgvars initializer looks like
    
    var dbgvars = []dbgVar{
            {"allocfreetrace", &debug.allocfreetrace},
    }
    
    Because the field address was not recognized as valid for a static
    initializer, the variable was initialized at runtime.  Normally that
    would be fine, but for the runtime package it meant that dbgvars was
    not initialized when it was read by parsedebugvars.  That meant that
    the GODEBUG environment variable did nothing.
    
    Fixing that revealed that the static initializer checks had to be more
    careful about interface types, just like the existing is_constant
    methods.
    
    Reviewed-on: https://go-review.googlesource.com/35891

From-SVN: r244982
2017-01-27 15:08:23 +00:00
Ian Lance Taylor
42f20102ef libgo: update to go1.8rc3
Reviewed-on: https://go-review.googlesource.com/35844

From-SVN: r244981
2017-01-27 15:01:57 +00:00
Bin Cheng
3f54004b09 re PR rtl-optimization/78559 (wrong code due to tree if-conversion?)
PR rtl-optimization/78559
	* combine.c (try_combine): Discard REG_EQUAL and REG_EQUIV for
	other_insn in combine.

	gcc/testsuite
	PR rtl-optimization/78559
	* gcc.c-torture/execute/pr78559.c: New test.

From-SVN: r244979
2017-01-27 14:42:23 +00:00
Martin Jambor
f6a24a94a6 [brigfe] Small fixes
2017-01-27  Pekka Jaaskelainen  <pekka.jaaskelainen@parmance.com>

	* configure.ac: Moved the white list of enabling BRIG FE to
	libhsail-rt/configure.tgt.  
	* configure: Regenerated.
	* MAINTAINERS: Updated maintainers for BRIG FE and libhsail-rt.

gcc/
	* builtin-types.def: Use unsigned_char_type_node for BT_UINT8.  Use
	uint16_type_node for BT_UINT16.

gcc/brig/
	* config-lang.in: Removed stale target-libbrig reference.

libhsail-rt/
	* configure.tgt: Moved the white list of supported targets here
	from configure.ac.  Added i[3456789]86-*-linux* as a supported env
	for the BRIG FE.
	* README: Added a proper description of what libhsail-rt is.

From-SVN: r244978
2017-01-27 15:35:07 +01:00
David Malcolm
71103b6104 docs: Add __GIMPLE and __RTL to the "Internals" doc
gcc/ChangeLog:
	* doc/sourcebuild.texi (Testsuites): Add "GIMPLE Tests" and
	"RTL Tests" to menu.
	(GIMPLE Tests): New node.
	(RTL Tests): New node.

From-SVN: r244977
2017-01-27 14:25:59 +00:00
Richard Biener
40b6bff965 re PR tree-optimization/79245 (Inefficient loop distribution to memcpy)
2017-01-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/79245
	* tree-loop-distribution.c (distribute_loop): Apply cost
	modeling also to detected patterns.

	* gcc.dg/tree-ssa/ldist-23.c: XFAIL.
	* gcc.dg/tree-ssa/ldist-25.c: New testcase.

From-SVN: r244976
2017-01-27 13:56:59 +00:00
Jakub Jelinek
b2f8892e35 re PR c/79199 (ICE with -Wduplicated-branches)
PR c/79199
	* c-c++-common/Wduplicated-branches-13.c: Require int32plus effective
	target.  Use 4294967293U instead of 4294967293.

From-SVN: r244975
2017-01-27 14:25:28 +01:00
Richard Biener
b002f3b9e1 re PR tree-optimization/71433 (-Warray-bounds false positive with -O2)
2017-01-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/71433
	* tree-vrp.c (register_new_assert_for): Revert earlier changes.
	(compare_assert_loc): New function.
	(process_assert_insertions): Sort and optimize assert locations
	to remove duplicates and push down identical assertions on
	edges to their destination block.

	* gcc.dg/Warray-bounds-21.c: New testcase.

From-SVN: r244974
2017-01-27 12:30:43 +00:00
Richard Biener
38f50ab65a re PR tree-optimization/79244 (ice in replace_uses_by, at tree-cfg.c:1866)
2017-01-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/79244
	* tree-vrp.c (remove_range_assertions): Forcefully propagate
	out SSA names even if abnormal.

	* gcc.dg/torture/pr79244.c: New testcase.

From-SVN: r244973
2017-01-27 12:24:54 +00:00
Jakub Jelinek
c04f41398e fib-opr-overload.cc (main): Change all occurrences of 40 to 32.
* g++.dg/cilk-plus/CK/fib-opr-overload.cc (main): Change
	all occurrences of 40 to 32.

From-SVN: r244967
2017-01-27 12:34:58 +01:00
Jakub Jelinek
89dc4c9488 realmpfr.h: Poison MPFR_RND{N,Z,U,D}.
* realmpfr.h: Poison MPFR_RND{N,Z,U,D}.
	* gimple-ssa-sprintf.c (format_floating_max): Use GMP_RNDN
	instead of MPFR_RNDN.

From-SVN: r244966
2017-01-27 12:28:34 +01:00
Richard Earnshaw
6ca513f9b2 [ARM] Fix PR target/79239 - unrecognized insn after pragma gcc pop_options
{committed for rearnsha}

It turns out that because the compiler uses a hash table to save the
cl_target_option structures it is unsafe to modify the result of
build_target_option_node() (doing so will cause the hash lookup to
fail).  This PR was due to not properly understanding this limitation.

The fix is to create temporary copies of the cl_target_option nodes for
use during target option processing and then only creating the tree node
once the options have been suitably modified.

gcc:
        PR target/79239
        * arm.c (arm_option_override): Don't call build_target_option_node
        until after doing all option overrides.
        (arm_valid_target_attribute_tree): Likewise.

gcc/testsuite:
        * gcc.target/arm/pr79239.c: New test.

From-SVN: r244965
2017-01-27 11:22:30 +00:00
Martin Liska
c7181f1393 Enhance doc for -fprofile-arcs
2017-01-27  Martin Liska  <mliska@suse.cz>

	* doc/invoke.texi (-fprofile-arcs): Document profiling support
	for {cd}tors and C++ {cd}tors.

From-SVN: r244964
2017-01-27 09:58:34 +00:00
Dominik Vogt
d876f5cd02 S/390: Fix matching setmem_long_and*.
The attached patch reactivates the setmem_long_and* patterns on S/390
that have not been generated for a while.

gcc/ChangeLog:

2017-01-27  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	* config/s390/s390.md ("*setmem_long_and")
	("*setmem_long_and_31z"): Use zero_extend instead of and.

gcc/testsuite/ChangeLog:

2017-01-27  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	* gcc.target/s390/md/setmem_long-1.c: Remove xfail, skip with -O0.

From-SVN: r244963
2017-01-27 08:07:26 +00:00
Adam Butcher
bb6a6ee9db re PR c++/64382 (ICE due to use of this inside a lambda that captures everything by ref inside a member function of a class template)
Fix PR c++/64382

	PR c++/64382
	* cp/parser.c (parsing_default_capturing_generic_lambda_in_template):
	New function.
	* cp/cp-tree.h: Declare it.
	* cp/semantics.c (finish_id_expression): Resolve names within a default
	capturing generic lambda defined within a template prior to
	instantiation to allow for captures to be added to the closure type.

	PR c++/64382
	* g++.dg/cpp1y/pr64382.C: New test.

From-SVN: r244962
2017-01-27 07:59:06 +00:00
Martin Sebor
0fb9ec83c3 gimple-ssa-sprintf.c (format_floating): Simplify the computation of precision to avoid preprocessor conditional.
gcc/ChangeLog:
	* gimple-ssa-sprintf.c (format_floating): Simplify the computation
	of precision to avoid preprocessor conditional.

From-SVN: r244961
2017-01-26 19:45:32 -07:00
GCC Administrator
c1c3f4f25d Daily bump.
From-SVN: r244960
2017-01-27 00:16:15 +00:00
Martin Sebor
9976a81057 gimple-ssa-sprintf.c (format_floating): Test HAVE_XFmode and HAVE_DFmode before using XFmode or DFmode.
gcc/ChangeLog:
	* gimple-ssa-sprintf.c (format_floating): Test HAVE_XFmode and
	HAVE_DFmode before using XFmode or DFmode.
	(parse_directive): Avoid using the z length modifier to avoid
	the ISO C++98 does not support the ‘z’ gnu_printf length modifier.

From-SVN: r244957
2017-01-26 16:37:17 -07:00
Martin Sebor
31c87a433c PR middle-end/78703 - fprintf-return-value floating point handling incorrect in locales with a mulltibyte decimal point
gcc/ChangeLog:
        PR middle-end/78703
        * gimple-ssa-sprintf.c (adjust_for_width_or_precision): Change
        to accept adjustment as an array.
        (get_int_range): New function.
        (struct directive): Make width and prec arrays.
        (directive::set_width, directive::set_precision): Call get_int_range.
        (format_integer, format_floating): Handle width and precision ranges.
        (format_string, parse_directive): Same.

gcc/testsuite/ChangeLog:
        PR middle-end/78703
        * gcc.dg/tree-ssa/builtin-snprintf-warn-1.c: Update
        * gcc.dg/tree-ssa/builtin-sprintf-warn-9.c: Rename...
        * gcc.dg/tree-ssa/builtin-sprintf-warn-10.c: ...to this.
        * gcc.dg/tree-ssa/builtin-sprintf-warn-9.c: New test.

From-SVN: r244956
2017-01-26 16:07:02 -07:00
Jakub Jelinek
b0670cc0eb re PR c++/79129 (ICE with -fdebug-types-section starting with r240578)
PR debug/79129
	* dwarf2out.c (generate_skeleton_bottom_up): For children with
	comdat_type_p set, just clone them, but keep the children in the
	original DIE.

	* g++.dg/debug/dwarf2/pr79129.C: New test.

From-SVN: r244955
2017-01-26 22:45:57 +01:00
Jakub Jelinek
f7c06c0f99 re PR debug/78835 (ICE with -fdebug-types-section and member function)
PR debug/78835
	* dwarf2out.c (prune_unused_types): Mark all functions with DIEs
	which have direct callers with -fvar-tracking-assignments enabled
	in the current TU.
	(resolve_addr): Avoid adding skeleton DIEs for DW_AT_call_origin
	inside of type units.

	* g++.dg/debug/dwarf2/pr78835.C: New test.

From-SVN: r244954
2017-01-26 22:44:49 +01:00
Martin Sebor
5d93da1d11 PR middle-end/78703 -fprintf-return-value floating point handling incorrect in locales with a mulltibyte decimal point
gcc/ChangeLog:
	PR middle-end/78703
	* gimple-ssa-sprintf.c (struct result_range): Add likely and
	unlikely counters.
	(struct format_result): Replace number_chars, number_chars_min,
	and number_chars_max with a single member of struct result_range.
	Remove bounded.
	(format_result::operator+=): Adjust.
	(struct fmtresult): Remove bounded.  Handle likely and unlikely
	counters.
	(fmtresult::adjust_for_width_or_precision): New function.
	(fmtresult:type_max_digits): New function.
	(bytes_remaining): Handle likely and unlikely counters.
	(min_bytes_remaining): Remove.
	(format_percent): Simplify.
	(format_integer, format_floating): Set likely and unlikely counters.
	(get_string_length, format_character, format_string): Same.
	(format_plain, should_warn_p): New function.
	(maybe_warn): Call should_warn_p.  Update diagnostic messages
	and handle those for all directives, including plain strings.
	(format_directive): Handle likely and unlikely counters.
	Remove unnecessary quoting from diagnostics.  Add an informational
	note.
	(add_bytes): Remove.
	(pass_sprintf_length::compute_format_length): Simplify.
	(try_substitute_return_value): Handle likely and unlikely counters.

gcc/testsuite/ChangeLog:

	PR middle-end/78703
	* gcc.dg/format/pr78569.c: Adjust.
	* gcc.dg/tree-ssa/builtin-snprintf-warn-2.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-2.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-5.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-2.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-4.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-6.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-7.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-9.c: Same.
	* gcc.dg/tree-ssa/builtin-sprintf.c: Same.

From-SVN: r244953
2017-01-26 14:14:18 -07:00
Jonathan Wakely
c86996727f PR libstdc++/70607 revert recent changes to <tr1/complex>
PR libstdc++/70607
	* include/tr1/complex (conj): Remove using-declaration and restore
	overloads, reverting previous change.

From-SVN: r244951
2017-01-26 19:40:02 +00:00
Jonathan Wakely
881191e865 Fix libstdc++ testsuite failures in C++98 and C++11 mode
* testsuite/23_containers/list/operations/78389.cc: Fix for C++11
	mode.
	* testsuite/23_containers/priority_queue/requirements/constructible.cc:
	Mark as unsupported in C++98 mode.
	* testsuite/23_containers/queue/requirements/constructible.cc:
	Likewise.
	* testsuite/23_containers/stack/requirements/constructible.cc:
	Likewise.
	* testsuite/25_algorithms/make_heap/movable.cc: Fix for C++11 mode.

From-SVN: r244950
2017-01-26 19:39:53 +00:00
Jakub Jelinek
905d2812e7 re PR c++/68727 (invalid offsetof expressions accepted)
PR c++/68727
	* cp-tree.def (OFFSETOF_EXPR): Bump number of operands to 2.
	* cp-tree.h (finish_offsetof): Add OBJECT_PTR argument.
	* parser.c (cp_parser_builtin_offsetof): Pass result of
	build_static_cast of null_pointer_node to finish_offsetof.
	* semantics.c (finish_offsetof): Add OBJECT_PTR argument, use
	it for -Winvalid-offsetof pedwarn instead of trying to guess
	original offsetof type from EXPR.  Save OBJECT_PTR as a new
	second operand to OFFSETOF_EXPR.
	* pt.c (tsubst_copy_and_build) <case OFFSETOF_EXPR>: Adjust
	finish_offsetof caller, pass the second operand of OFFSETOF_EXPR
	as OBJECT_PTR.

	* g++.dg/other/offsetof8.C: Add expected error.
	* g++.dg/other/offsetof9.C: New test.

From-SVN: r244949
2017-01-26 20:39:40 +01:00