aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8/gcc/c-family
diff options
context:
space:
mode:
authorAndrew Hsieh <andrewhsieh@google.com>2014-06-18 13:00:04 -0700
committerPavel Chupin <pavel.v.chupin@intel.com>2014-06-19 22:38:42 +0400
commitf190d6284359da8ae8694b2d2e14b01602a959ed (patch)
treed4e0548e7cec02d60b1082368032e66a1c509a02 /gcc-4.8/gcc/c-family
parent4ff2f42147bc128ce38789071d98e55844cd3a5e (diff)
downloadtoolchain_gcc-f190d6284359da8ae8694b2d2e14b01602a959ed.tar.gz
toolchain_gcc-f190d6284359da8ae8694b2d2e14b01602a959ed.tar.bz2
toolchain_gcc-f190d6284359da8ae8694b2d2e14b01602a959ed.zip
Merge GCC 4.8.3
Change-Id: I0abe59f7705b3eccc6b2f123af75b2e30917696a
Diffstat (limited to 'gcc-4.8/gcc/c-family')
-rw-r--r--gcc-4.8/gcc/c-family/ChangeLog79
-rw-r--r--gcc-4.8/gcc/c-family/c-common.c27
-rw-r--r--gcc-4.8/gcc/c-family/c-opts.c11
-rw-r--r--gcc-4.8/gcc/c-family/c-pragma.c11
-rw-r--r--gcc-4.8/gcc/c-family/c.opt10
5 files changed, 118 insertions, 20 deletions
diff --git a/gcc-4.8/gcc/c-family/ChangeLog b/gcc-4.8/gcc/c-family/ChangeLog
index 794be14c4..8100afca2 100644
--- a/gcc-4.8/gcc/c-family/ChangeLog
+++ b/gcc-4.8/gcc/c-family/ChangeLog
@@ -1,3 +1,82 @@
+2014-05-22 Release Manager
+
+ * GCC 4.8.3 released.
+
+2014-05-06 Richard Biener <rguenther@suse.de>
+
+ * c-opts.c (c_common_post_options): For -freestanding,
+ -fno-hosted and -fno-builtin disable pattern recognition
+ if not enabled explicitely.
+
+2014-04-10 Jakub Jelinek <jakub@redhat.com>
+
+ Backport from mainline
+ 2014-03-28 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/60689
+ * c-common.c (add_atomic_size_parameter): When creating new
+ params vector, push the size argument first.
+
+ 2014-03-22 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/60603
+ * c-opts.c (c_finish_options): Restore cb_file_change call to
+ <built-in>.
+
+ 2014-03-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/36282
+ * c-pragma.c (apply_pragma_weak): Only look at
+ TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl)) if
+ DECL_ASSEMBLER_NAME_SET_P (decl).
+ (maybe_apply_pending_pragma_weaks): Exit early if
+ vec_safe_is_empty (pending_weaks) rather than only when
+ !pending_weaks.
+ (maybe_apply_pragma_weak): Likewise. If !DECL_ASSEMBLER_NAME_SET_P,
+ set assembler name back to NULL afterwards.
+
+2014-04-07 Dominique d'Humieres <dominiq@lps.ens.fr>
+
+ Backport from mainline
+ 2013-09-14 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR target/48094
+ * c.opt (fgnu-runtime, fnext-runtime, fobjc-abi-version,
+ fobjc-gc, freplace-objc-classes): Accept for LTO.
+
+2014-03-06 Jakub Jelinek <jakub@redhat.com>
+
+ Backport from mainline
+ 2014-02-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/37743
+ * c-common.c (c_common_nodes_and_builtins): When initializing
+ c_uint{16,32,64}_type_node, also set corresponding
+ uint{16,32,64}_type_node to the same value.
+
+ 2014-02-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/60101
+ * c-common.c (merge_tlist): If copy is true, call new_tlist,
+ if false, add ADD itself, rather than vice versa.
+ (verify_tree): For COND_EXPR, don't call merge_tlist with non-zero
+ copy. For SAVE_EXPR, only call merge_tlist once.
+
+2013-11-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/59280
+ * c-common.c (get_priority): If TREE_VALUE (args) is IDENTIFIER_NODE,
+ goto invalid. If it is error_mark_node, don't issue further
+ diagnostics.
+
+2013-11-04 Marek Polacek <polacek@redhat.com>
+
+ Backport from mainline
+ 2013-11-04 Marek Polacek <polacek@redhat.com>
+
+ PR c++/58979
+ * c-common.c (invalid_indirection_error): Handle RO_ARROW_STAR case.
+
2013-10-16 Release Manager
* GCC 4.8.2 released.
diff --git a/gcc-4.8/gcc/c-family/c-common.c b/gcc-4.8/gcc/c-family/c-common.c
index 0d91cc3cf..86f64ec60 100644
--- a/gcc-4.8/gcc/c-family/c-common.c
+++ b/gcc-4.8/gcc/c-family/c-common.c
@@ -2894,7 +2894,7 @@ merge_tlist (struct tlist **to, struct tlist *add, int copy)
}
if (!found)
{
- *end = copy ? add : new_tlist (NULL, add->expr, add->writer);
+ *end = copy ? new_tlist (NULL, add->expr, add->writer) : add;
end = &(*end)->next;
*end = 0;
}
@@ -3052,7 +3052,7 @@ verify_tree (tree x, struct tlist **pbefore_sp, struct tlist **pno_sp,
verify_tree (TREE_OPERAND (x, 0), &tmp_before, &tmp_list2, NULL_TREE);
warn_for_collisions (tmp_list2);
merge_tlist (pbefore_sp, tmp_before, 0);
- merge_tlist (pbefore_sp, tmp_list2, 1);
+ merge_tlist (pbefore_sp, tmp_list2, 0);
tmp_list3 = tmp_nosp = 0;
verify_tree (TREE_OPERAND (x, 1), &tmp_list3, &tmp_nosp, NULL_TREE);
@@ -3156,12 +3156,7 @@ verify_tree (tree x, struct tlist **pbefore_sp, struct tlist **pno_sp,
warn_for_collisions (tmp_nosp);
tmp_list3 = 0;
- while (tmp_nosp)
- {
- struct tlist *t = tmp_nosp;
- tmp_nosp = t->next;
- merge_tlist (&tmp_list3, t, 0);
- }
+ merge_tlist (&tmp_list3, tmp_nosp, 0);
t->cache_before_sp = tmp_before;
t->cache_after_sp = tmp_list3;
}
@@ -5511,13 +5506,13 @@ c_common_nodes_and_builtins (void)
uint8_type_node =
TREE_TYPE (identifier_global_value (c_get_ident (UINT8_TYPE)));
if (UINT16_TYPE)
- c_uint16_type_node =
+ c_uint16_type_node = uint16_type_node =
TREE_TYPE (identifier_global_value (c_get_ident (UINT16_TYPE)));
if (UINT32_TYPE)
- c_uint32_type_node =
+ c_uint32_type_node = uint32_type_node =
TREE_TYPE (identifier_global_value (c_get_ident (UINT32_TYPE)));
if (UINT64_TYPE)
- c_uint64_type_node =
+ c_uint64_type_node = uint64_type_node =
TREE_TYPE (identifier_global_value (c_get_ident (UINT64_TYPE)));
if (INT_LEAST8_TYPE)
int_least8_type_node =
@@ -6917,6 +6912,10 @@ get_priority (tree args, bool is_destructor)
}
arg = TREE_VALUE (args);
+ if (TREE_CODE (arg) == IDENTIFIER_NODE)
+ goto invalid;
+ if (arg == error_mark_node)
+ return DEFAULT_INIT_PRIORITY;
arg = default_conversion (arg);
if (!host_integerp (arg, /*pos=*/0)
|| !INTEGRAL_TYPE_P (TREE_TYPE (arg)))
@@ -9763,6 +9762,11 @@ invalid_indirection_error (location_t loc, tree type, ref_operator errstring)
"invalid type argument of %<->%> (have %qT)",
type);
break;
+ case RO_ARROW_STAR:
+ error_at (loc,
+ "invalid type argument of %<->*%> (have %qT)",
+ type);
+ break;
case RO_IMPLICIT_CONVERSION:
error_at (loc,
"invalid type argument of implicit conversion (have %qT)",
@@ -10198,6 +10202,7 @@ add_atomic_size_parameter (unsigned n, location_t loc, tree function,
len = params->length ();
vec_alloc (v, len + 1);
+ v->quick_push (build_int_cst (size_type_node, n));
for (z = 0; z < len; z++)
v->quick_push ((*params)[z]);
f = build_function_call_vec (loc, function, v, NULL);
diff --git a/gcc-4.8/gcc/c-family/c-opts.c b/gcc-4.8/gcc/c-family/c-opts.c
index 4b6990a60..5fce7b653 100644
--- a/gcc-4.8/gcc/c-family/c-opts.c
+++ b/gcc-4.8/gcc/c-family/c-opts.c
@@ -840,6 +840,12 @@ c_common_post_options (const char **pfilename)
if (flag_objc_exceptions && !flag_objc_sjlj_exceptions)
flag_exceptions = 1;
+ /* If -ffreestanding, -fno-hosted or -fno-builtin then disable
+ pattern recognition. */
+ if (!global_options_set.x_flag_tree_loop_distribute_patterns
+ && flag_no_builtin)
+ flag_tree_loop_distribute_patterns = 0;
+
/* -Woverlength-strings is off by default, but is enabled by -Wpedantic.
It is never enabled in C++, as the minimum limit is not normative
in that standard. */
@@ -1258,7 +1264,9 @@ c_finish_options (void)
{
size_t i;
- {
+ cb_file_change (parse_in,
+ linemap_add (line_table, LC_RENAME, 0,
+ _("<built-in>"), 0));
/* Make sure all of the builtins about to be declared have
BUILTINS_LOCATION has their source_location. */
source_location builtins_loc = BUILTINS_LOCATION;
@@ -1268,7 +1276,6 @@ c_finish_options (void)
c_cpp_builtins (parse_in);
cpp_stop_forcing_token_locations (parse_in);
- }
/* We're about to send user input to cpplib, so make it warn for
things that we previously (when we sent it internal definitions)
diff --git a/gcc-4.8/gcc/c-family/c-pragma.c b/gcc-4.8/gcc/c-family/c-pragma.c
index 7d8a1a605..02cb36a60 100644
--- a/gcc-4.8/gcc/c-family/c-pragma.c
+++ b/gcc-4.8/gcc/c-family/c-pragma.c
@@ -259,6 +259,7 @@ apply_pragma_weak (tree decl, tree value)
if (SUPPORTS_WEAK && DECL_EXTERNAL (decl) && TREE_USED (decl)
&& !DECL_WEAK (decl) /* Don't complain about a redundant #pragma. */
+ && DECL_ASSEMBLER_NAME_SET_P (decl)
&& TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl)))
warning (OPT_Wpragmas, "applying #pragma weak %q+D after first use "
"results in unspecified behavior", decl);
@@ -276,7 +277,7 @@ maybe_apply_pragma_weak (tree decl)
/* Avoid asking for DECL_ASSEMBLER_NAME when it's not needed. */
/* No weak symbols pending, take the short-cut. */
- if (!pending_weaks)
+ if (vec_safe_is_empty (pending_weaks))
return;
/* If it's not visible outside this file, it doesn't matter whether
it's weak. */
@@ -288,7 +289,13 @@ maybe_apply_pragma_weak (tree decl)
if (TREE_CODE (decl) != FUNCTION_DECL && TREE_CODE (decl) != VAR_DECL)
return;
+ if (DECL_ASSEMBLER_NAME_SET_P (decl))
id = DECL_ASSEMBLER_NAME (decl);
+ else
+ {
+ id = DECL_ASSEMBLER_NAME (decl);
+ SET_DECL_ASSEMBLER_NAME (decl, NULL_TREE);
+ }
FOR_EACH_VEC_ELT (*pending_weaks, i, pe)
if (id == pe->name)
@@ -309,7 +316,7 @@ maybe_apply_pending_pragma_weaks (void)
pending_weak *pe;
symtab_node target;
- if (!pending_weaks)
+ if (vec_safe_is_empty (pending_weaks))
return;
FOR_EACH_VEC_ELT (*pending_weaks, i, pe)
diff --git a/gcc-4.8/gcc/c-family/c.opt b/gcc-4.8/gcc/c-family/c.opt
index 10ae84dbb..4da80b0ed 100644
--- a/gcc-4.8/gcc/c-family/c.opt
+++ b/gcc-4.8/gcc/c-family/c.opt
@@ -933,7 +933,7 @@ C++ ObjC++ Var(flag_no_gnu_keywords, 0)
Recognize GNU-defined keywords
fgnu-runtime
-ObjC ObjC++ Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
+ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime,0) Init(NEXT_OBJC_RUNTIME)
Generate code for GNU runtime environment
fgnu89-inline
@@ -1007,7 +1007,7 @@ fnew-abi
C++ ObjC++ Ignore Warn(switch %qs is no longer supported)
fnext-runtime
-ObjC ObjC++ Report RejectNegative Var(flag_next_runtime)
+ObjC ObjC++ LTO Report RejectNegative Var(flag_next_runtime)
Generate code for NeXT (Apple Mac OS X) runtime environment
fnil-receivers
@@ -1025,7 +1025,7 @@ C++ ObjC++ Optimization Var(flag_nothrow_opt)
Treat a throw() exception specification as noexcept to improve code size
fobjc-abi-version=
-ObjC ObjC++ Joined Report RejectNegative UInteger Var(flag_objc_abi)
+ObjC ObjC++ LTO Joined Report RejectNegative UInteger Var(flag_objc_abi)
Specify which ABI to use for Objective-C family code and meta-data generation.
; Generate special '- .cxx_construct' and '- .cxx_destruct' methods
@@ -1045,7 +1045,7 @@ ObjC ObjC++ Var(flag_objc_exceptions)
Enable Objective-C exception and synchronization syntax
fobjc-gc
-ObjC ObjC++ Var(flag_objc_gc)
+ObjC ObjC++ LTO Var(flag_objc_gc)
Enable garbage collection (GC) in Objective-C/Objective-C++ programs
fobjc-nilcheck
@@ -1105,7 +1105,7 @@ C++ ObjC++ Var(flag_pretty_templates) Init(1)
-fno-pretty-templates Do not pretty-print template specializations as the template signature followed by the arguments
freplace-objc-classes
-ObjC ObjC++ Var(flag_replace_objc_classes)
+ObjC ObjC++ LTO Var(flag_replace_objc_classes)
Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime
frepo