diff options
author | pfg <pfg@FreeBSD.org> | 2013-12-15 03:47:31 +0000 |
---|---|---|
committer | pfg <pfg@FreeBSD.org> | 2013-12-15 03:47:31 +0000 |
commit | 81b52978780f8e031af44e70e553b7b8c7146659 (patch) | |
tree | ac6cf6b38fa03b3fe833b7fed287d281e90a822e /contrib/gcc/cp | |
parent | 452ca0b4a4cc660ea49c3719436eebd4fe78b787 (diff) | |
download | FreeBSD-src-81b52978780f8e031af44e70e553b7b8c7146659.zip FreeBSD-src-81b52978780f8e031af44e70e553b7b8c7146659.tar.gz |
MFC rr258501, r258507;
gcc: Bring updates from Google's enhanced gcc-4.2.1.
Google released and enhanced version of gcc-4.2.1 plus their local
patches for Android[1].
The patches are owned by Google and the license hasn't been changed
from the original GPLv2. We are only bringing a subset of the
available patches that may be helpful in FreeBSD, in other words,
changes specific to android are not included.
From the README.google file[1].
Patches applied to google_vendor_src_branch/gcc/gcc-4.2.1:
gcc/Makefile.in
gcc/c-common.c
gcc/c-common.h
gcc/c-opts.c
gcc/c-typeck.c
gcc/cp/typeck.c
gcc/doc/invoke.texi
gcc/flags.h
gcc/opts.c
gcc/tree-flow.h
gcc/tree-ssa-alias-warnings.c
gcc/tree-ssa-alias.c
Backport of -Wstrict-aliasing from mainline.
Silvius Rus <rus@google.com>
gcc/coverage.c:
Patch coverage_checksum_string for PR 25351.
Seongbae Park <spark@google.com>
Not yet submitted to FSF.
gcc/c-opts.c
gcc/c-ppoutput.c
gcc/c.opt
gcc/doc/cppopts.texi
libcpp/Makefile.in
libcpp/directives-only.c
libcpp/directives.c
libcpp/files.c
libcpp/include/cpplib.h
libcpp/init.c
libcpp/internal.h
libcpp/macro.c
Support for -fdirectives-only.
Ollie Wild <aaw@google.com>.
Submitted to FSF but not yet approved.
libstdc++-v3/include/ext/hashtable.h
http://b/742065
http://b/629994
Reduce min size of hashtable for hash_map, hash_set from 53 to 5
libstdc++-v3/include/ext/hashtable.h
http://b/629994
Do not iterate over buckets if hashtable is empty.
gcc/common.opt
gcc/doc/invoke.texi
gcc/flags.h
gcc/gimplify.c
gcc/opts.c
Add Saito's patch for -finstrument-functions-exclude-* options.
gcc/common.opt
gcc/doc/invoke.texi
gcc/final.c
gcc/flags.h
gcc/opts.c
gcc/testsuite/gcc.dg/Wframe-larger-than.c
Add a new flag -Wframe-larger-than- which enables a new warning
when a frame size of a function is larger than specified.
This patch hasn't been integrated into gcc mainline yet.
gcc/tree-vrp.c
Add a hack to avoid using ivopts information for pointers starting
at constant values.
Reference:
[1]
https://android.googlesource.com/toolchain/gcc/+/master/gcc-4.2.1/
Obtained from: Google Inc.
Diffstat (limited to 'contrib/gcc/cp')
-rw-r--r-- | contrib/gcc/cp/typeck.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/contrib/gcc/cp/typeck.c b/contrib/gcc/cp/typeck.c index dd92b22..d17d0bb 100644 --- a/contrib/gcc/cp/typeck.c +++ b/contrib/gcc/cp/typeck.c @@ -2334,6 +2334,19 @@ build_indirect_ref (tree ptr, const char *errorstring) types. */ tree t = canonical_type_variant (TREE_TYPE (type)); + if (TREE_CODE (ptr) == CONVERT_EXPR + || TREE_CODE (ptr) == NOP_EXPR + || TREE_CODE (ptr) == VIEW_CONVERT_EXPR) + { + /* If a warning is issued, mark it to avoid duplicates from + the backend. This only needs to be done at + warn_strict_aliasing > 2. */ + if (warn_strict_aliasing > 2) + if (strict_aliasing_warning (TREE_TYPE (TREE_OPERAND (ptr, 0)), + type, TREE_OPERAND (ptr, 0))) + TREE_NO_WARNING (ptr) = 1; + } + if (VOID_TYPE_P (t)) { /* A pointer to incomplete type (other than cv void) can be @@ -5256,7 +5269,8 @@ build_reinterpret_cast_1 (tree type, tree expr, bool c_cast_p, /* We need to strip nops here, because the frontend likes to create (int *)&a for array-to-pointer decay, instead of &a[0]. */ STRIP_NOPS (sexpr); - strict_aliasing_warning (intype, type, sexpr); + if (warn_strict_aliasing <= 2) + strict_aliasing_warning (intype, type, sexpr); return fold_if_not_in_template (build_nop (type, expr)); } |