~ubuntu-branches/debian/sid/gcc-4.8/sid

« back to all changes in this revision

Viewing changes to .svn/pristine/db/db98ea4c7c124db5feadeef0f79cefcbb5bc1e6b.svn-base

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2014-12-19 19:48:34 UTC
  • Revision ID: package-import@ubuntu.com-20141219194834-4dz1q7rrn5pad823
Tags: 4.8.4-1
* GCC 4.8.4 release.
  - Fix PR target/61407 (darwin), PR middle-end/58624 (ice),
    PR sanitizer/64265 (wrong code).
* Require recent binutils to pass go test failures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# DP: updates from the 4.8 branch upto 20140728 (r213129).
 
2
 
 
3
last_updated()
 
4
{
 
5
        cat > ${dir}LAST_UPDATED <<EOF
 
6
Mon Jul 28 17:06:11 CEST 2014
 
7
Mon Jul 28 15:06:11 UTC 2014 (revision 213129)
 
8
EOF
 
9
}
 
10
 
 
11
LANG=C svn diff svn://gcc.gnu.org/svn/gcc/tags/gcc_4_8_3_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_8-branch \
 
12
        | sed -r 's,^--- (\S+)\t(\S+)(.*)$,--- a/src/\1\t\2,;s,^\+\+\+ (\S+)\t(\S+)(.*)$,+++ b/src/\1\t\2,' \
 
13
        | awk '/^Index:.*\.(class|texi)/ {skip=1; next} /^Index:/ { skip=0 } skip==0'
 
14
 
 
15
Index: libstdc++-v3/scripts/run_doxygen
 
16
===================================================================
 
17
--- a/src/libstdc++-v3/scripts/run_doxygen      (.../tags/gcc_4_8_3_release)
 
18
+++ b/src/libstdc++-v3/scripts/run_doxygen      (.../branches/gcc-4_8-branch)
 
19
@@ -193,8 +193,15 @@
 
20
 if $do_latex; then
 
21
     cd ${outdir}/${mode}
 
22
 
 
23
-    # Also drop in the header file and style sheet
 
24
-    doxygen -w latex header.tex doxygen.sty
 
25
+    # Grrr, Doxygen 1.8.x changed the -w latex options.
 
26
+    need_footer=`doxygen -h | sed -n -e '/-w latex/s=.*footer.*=true=p'`
 
27
+
 
28
+    # Also drop in the header file (maybe footer file) and style sheet
 
29
+    if $need_footer; then
 
30
+      doxygen -w latex header.tex footer.tex doxygen.sty
 
31
+    else
 
32
+      doxygen -w latex header.tex doxygen.sty
 
33
+    fi
 
34
     
 
35
     echo ::
 
36
     echo :: LaTeX pages begin with
 
37
Index: libstdc++-v3/include/std/future
 
38
===================================================================
 
39
--- a/src/libstdc++-v3/include/std/future       (.../tags/gcc_4_8_3_release)
 
40
+++ b/src/libstdc++-v3/include/std/future       (.../branches/gcc-4_8-branch)
 
41
@@ -351,12 +351,14 @@
 
42
       void
 
43
       _M_set_result(function<_Ptr_type()> __res, bool __ignore_failure = false)
 
44
       {
 
45
-        bool __set = __ignore_failure;
 
46
+        bool __set = false;
 
47
         // all calls to this function are serialized,
 
48
         // side-effects of invoking __res only happen once
 
49
         call_once(_M_once, &_State_base::_M_do_set, this, ref(__res),
 
50
             ref(__set));
 
51
-        if (!__set)
 
52
+       if (__set)
 
53
+         _M_cond.notify_all();
 
54
+       else if (!__ignore_failure)
 
55
           __throw_future_error(int(future_errc::promise_already_satisfied));
 
56
       }
 
57
 
 
58
@@ -471,7 +473,6 @@
 
59
           lock_guard<mutex> __lock(_M_mutex);
 
60
           _M_result.swap(__res);
 
61
         }
 
62
-        _M_cond.notify_all();
 
63
         __set = true;
 
64
       }
 
65
 
 
66
@@ -983,22 +984,25 @@
 
67
       void
 
68
       set_value(const _Res& __r)
 
69
       {
 
70
+       auto __future = _M_future;
 
71
         auto __setter = _State::__setter(this, __r);
 
72
-        _M_future->_M_set_result(std::move(__setter));
 
73
+        __future->_M_set_result(std::move(__setter));
 
74
       }
 
75
 
 
76
       void
 
77
       set_value(_Res&& __r)
 
78
       {
 
79
+       auto __future = _M_future;
 
80
         auto __setter = _State::__setter(this, std::move(__r));
 
81
-        _M_future->_M_set_result(std::move(__setter));
 
82
+        __future->_M_set_result(std::move(__setter));
 
83
       }
 
84
 
 
85
       void
 
86
       set_exception(exception_ptr __p)
 
87
       {
 
88
+       auto __future = _M_future;
 
89
         auto __setter = _State::__setter(__p, this);
 
90
-        _M_future->_M_set_result(std::move(__setter));
 
91
+        __future->_M_set_result(std::move(__setter));
 
92
       }
 
93
     };
 
94
 
 
95
@@ -1081,15 +1085,17 @@
 
96
       void
 
97
       set_value(_Res& __r)
 
98
       {
 
99
+       auto __future = _M_future;
 
100
         auto __setter = _State::__setter(this, __r);
 
101
-        _M_future->_M_set_result(std::move(__setter));
 
102
+        __future->_M_set_result(std::move(__setter));
 
103
       }
 
104
 
 
105
       void
 
106
       set_exception(exception_ptr __p)
 
107
       {
 
108
+       auto __future = _M_future;
 
109
         auto __setter = _State::__setter(__p, this);
 
110
-        _M_future->_M_set_result(std::move(__setter));
 
111
+        __future->_M_set_result(std::move(__setter));
 
112
       }
 
113
     };
 
114
 
 
115
@@ -1166,8 +1172,9 @@
 
116
       void
 
117
       set_exception(exception_ptr __p)
 
118
       {
 
119
+       auto __future = _M_future;
 
120
         auto __setter = _State::__setter(__p, this);
 
121
-        _M_future->_M_set_result(std::move(__setter));
 
122
+        __future->_M_set_result(std::move(__setter));
 
123
       }
 
124
     };
 
125
 
 
126
@@ -1193,8 +1200,9 @@
 
127
   inline void
 
128
   promise<void>::set_value()
 
129
   {
 
130
+    auto __future = _M_future;
 
131
     auto __setter = _State::__setter(this);
 
132
-    _M_future->_M_set_result(std::move(__setter));
 
133
+    __future->_M_set_result(std::move(__setter));
 
134
   }
 
135
 
 
136
 
 
137
Index: libstdc++-v3/include/bits/stl_tree.h
 
138
===================================================================
 
139
--- a/src/libstdc++-v3/include/bits/stl_tree.h  (.../tags/gcc_4_8_3_release)
 
140
+++ b/src/libstdc++-v3/include/bits/stl_tree.h  (.../branches/gcc-4_8-branch)
 
141
@@ -510,11 +510,11 @@
 
142
 
 
143
       _Link_type
 
144
       _M_end()
 
145
-      { return static_cast<_Link_type>(&this->_M_impl._M_header); }
 
146
+      { return reinterpret_cast<_Link_type>(&this->_M_impl._M_header); }
 
147
 
 
148
       _Const_Link_type
 
149
       _M_end() const
 
150
-      { return static_cast<_Const_Link_type>(&this->_M_impl._M_header); }
 
151
+      { return reinterpret_cast<_Const_Link_type>(&this->_M_impl._M_header); }
 
152
 
 
153
       static const_reference
 
154
       _S_value(_Const_Link_type __x)
 
155
Index: libstdc++-v3/include/tr2/bool_set
 
156
===================================================================
 
157
--- a/src/libstdc++-v3/include/tr2/bool_set     (.../tags/gcc_4_8_3_release)
 
158
+++ b/src/libstdc++-v3/include/tr2/bool_set     (.../branches/gcc-4_8-branch)
 
159
@@ -44,7 +44,7 @@
 
160
    *  bool_set
 
161
    *
 
162
    *  See N2136, Bool_set: multi-valued logic
 
163
-   *  by Herv� Br�nnimann, Guillaume Melquiond, Sylvain Pion.
 
164
+   *  by Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion.
 
165
    *
 
166
    *  The implicit conversion to bool is slippery!  I may use the new
 
167
    *  explicit conversion.  This has been specialized in the language
 
168
Index: libstdc++-v3/ChangeLog
 
169
===================================================================
 
170
--- a/src/libstdc++-v3/ChangeLog        (.../tags/gcc_4_8_3_release)
 
171
+++ b/src/libstdc++-v3/ChangeLog        (.../branches/gcc-4_8-branch)
 
172
@@ -1,3 +1,27 @@
 
173
+2014-06-03  Jonathan Wakely  <jwakely@redhat.com>
 
174
+
 
175
+       Backport from mainline
 
176
+       2014-04-15  Jonathan Wakely  <jwakely@redhat.com>
 
177
+
 
178
+       PR libstdc++/60734
 
179
+       * include/bits/stl_tree.h (_Rb_tree::_M_end): Fix invalid cast.
 
180
+
 
181
+       Backport from mainline
 
182
+       2014-05-16  Jonathan Wakely  <jwakely@redhat.com>
 
183
+
 
184
+       PR libstdc++/60966
 
185
+       * include/std/future (__future_base::_State_baseV2::_M_set_result):
 
186
+       Signal condition variable after call_once returns.
 
187
+       (__future_base::_State_baseV2::_M_do_set): Do not signal here.
 
188
+       (promise::set_value, promise::set_exception): Increment the reference
 
189
+       count on the shared state until the function returns.
 
190
+       * testsuite/30_threads/promise/60966.cc: New.
 
191
+
 
192
+2014-05-29  Jonathan Wakely  <jwakely@redhat.com>
 
193
+
 
194
+       * include/tr2/bool_set: Use UTF-8 for accented characters.
 
195
+       * scripts/run_doxygen: Handle Doxygen 1.8.x change.
 
196
+
 
197
 2014-05-22  Release Manager
 
198
 
 
199
        * GCC 4.8.3 released.
 
200
Index: libstdc++-v3/testsuite/30_threads/promise/60966.cc
 
201
===================================================================
 
202
--- a/src/libstdc++-v3/testsuite/30_threads/promise/60966.cc    (.../tags/gcc_4_8_3_release)
 
203
+++ b/src/libstdc++-v3/testsuite/30_threads/promise/60966.cc    (.../branches/gcc-4_8-branch)
 
204
@@ -0,0 +1,67 @@
 
205
+// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-gnu* *-*-solaris* *-*-cygwin *-*-darwin* powerpc-ibm-aix* } }
 
206
+// { dg-options " -std=gnu++11 -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-gnu* powerpc-ibm-aix* } }
 
207
+// { dg-options " -std=gnu++11 -pthreads" { target *-*-solaris* } }
 
208
+// { dg-options " -std=gnu++11 " { target *-*-cygwin *-*-darwin* } }
 
209
+// { dg-require-cstdint "" }
 
210
+// { dg-require-gthreads "" }
 
211
+// { dg-require-atomic-builtins "" }
 
212
+
 
213
+// Copyright (C) 2014 Free Software Foundation, Inc.
 
214
+//
 
215
+// This file is part of the GNU ISO C++ Library.  This library is free
 
216
+// software; you can redistribute it and/or modify it under the
 
217
+// terms of the GNU General Public License as published by the
 
218
+// Free Software Foundation; either version 3, or (at your option)
 
219
+// any later version.
 
220
+
 
221
+// This library is distributed in the hope that it will be useful,
 
222
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
 
223
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
224
+// GNU General Public License for more details.
 
225
+
 
226
+// You should have received a copy of the GNU General Public License along
 
227
+// with this library; see the file COPYING3.  If not see
 
228
+// <http://www.gnu.org/licenses/>.
 
229
+
 
230
+// libstdc++/60966
 
231
+// This test hangs if std::promise::~promise() destroys the
 
232
+// shared state before std::promise::set_value() finishes using it.
 
233
+
 
234
+#include <future>
 
235
+#include <thread>
 
236
+#include <vector>
 
237
+
 
238
+const int THREADS = 10;
 
239
+
 
240
+void run_task(std::promise<void>* pr)
 
241
+{
 
242
+  std::this_thread::sleep_for(std::chrono::milliseconds(100));
 
243
+  pr->set_value();
 
244
+}
 
245
+
 
246
+int main()
 
247
+{
 
248
+  std::vector<std::promise<void>*> tasks(THREADS);
 
249
+  std::vector<std::thread> threads(THREADS);
 
250
+  std::vector<std::future<void>> futures(THREADS);
 
251
+
 
252
+  for (int i = 0; i < THREADS; ++i)
 
253
+  {
 
254
+    std::promise<void>* task = new std::promise<void>;
 
255
+    tasks[i] = task;
 
256
+    futures[i] = task->get_future();
 
257
+    threads[i] = std::thread(run_task, task);
 
258
+  }
 
259
+
 
260
+  for (int i = 0; i < THREADS; ++i)
 
261
+  {
 
262
+    // the temporary future releases the state as soon as wait() returns
 
263
+    std::future<void>(std::move(futures[i])).wait();
 
264
+    // state is ready, should now be safe to delete promise, so it
 
265
+    // releases the shared state too
 
266
+    delete tasks[i];
 
267
+  }
 
268
+
 
269
+  for (auto& t : threads)
 
270
+    t.join();
 
271
+}
 
272
Index: configure.ac
 
273
===================================================================
 
274
--- a/src/configure.ac  (.../tags/gcc_4_8_3_release)
 
275
+++ b/src/configure.ac  (.../branches/gcc-4_8-branch)
 
276
@@ -1154,6 +1154,9 @@
 
277
   *-mingw*)
 
278
     host_makefile_frag="config/mh-mingw"
 
279
     ;;
 
280
+  alpha*-*-linux*)
 
281
+    host_makefile_frag="config/mh-alpha-linux"
 
282
+    ;;
 
283
   hppa*-hp-hpux10*)
 
284
     host_makefile_frag="config/mh-pa-hpux10"
 
285
     ;;
 
286
Index: ChangeLog
 
287
===================================================================
 
288
--- a/src/ChangeLog     (.../tags/gcc_4_8_3_release)
 
289
+++ b/src/ChangeLog     (.../branches/gcc-4_8-branch)
 
290
@@ -1,3 +1,9 @@
 
291
+2014-07-26  Uros Bizjak  <ubizjak@gmail.com>
 
292
+
 
293
+       PR target/47230
 
294
+       * configure.ac (alpha*-*-linux*): Use mh-alpha-linux.
 
295
+       * configure: Regenerate.
 
296
+
 
297
 2014-05-22  Release Manager
 
298
 
 
299
        * GCC 4.8.3 released.
 
300
Index: contrib/ChangeLog
 
301
===================================================================
 
302
--- a/src/contrib/ChangeLog     (.../tags/gcc_4_8_3_release)
 
303
+++ b/src/contrib/ChangeLog     (.../branches/gcc-4_8-branch)
 
304
@@ -1,3 +1,7 @@
 
305
+2014-07-07  Richard Biener  <rguenther@suse.de>
 
306
+
 
307
+        * gennews: Use gcc-3.0/index.html.
 
308
+
 
309
 2014-05-22  Release Manager
 
310
 
 
311
        * GCC 4.8.3 released.
 
312
Index: contrib/gennews
 
313
===================================================================
 
314
--- a/src/contrib/gennews       (.../tags/gcc_4_8_3_release)
 
315
+++ b/src/contrib/gennews       (.../branches/gcc-4_8-branch)
 
316
@@ -37,7 +37,7 @@
 
317
     gcc-3.3/index.html gcc-3.3/changes.html
 
318
     gcc-3.2/index.html gcc-3.2/changes.html
 
319
     gcc-3.1/index.html gcc-3.1/changes.html
 
320
-    gcc-3.0/gcc-3.0.html gcc-3.0/features.html gcc-3.0/caveats.html
 
321
+    gcc-3.0/index.html gcc-3.0/features.html gcc-3.0/caveats.html
 
322
     gcc-2.95/index.html gcc-2.95/features.html gcc-2.95/caveats.html
 
323
     egcs-1.1/index.html egcs-1.1/features.html egcs-1.1/caveats.html
 
324
     egcs-1.0/index.html egcs-1.0/features.html egcs-1.0/caveats.html"
 
325
Index: config/mh-alpha-linux
 
326
===================================================================
 
327
--- a/src/config/mh-alpha-linux (.../tags/gcc_4_8_3_release)
 
328
+++ b/src/config/mh-alpha-linux (.../branches/gcc-4_8-branch)
 
329
@@ -0,0 +1,3 @@
 
330
+# Prevent GPREL16 relocation truncation
 
331
+LDFLAGS += -Wl,--no-relax
 
332
+BOOT_LDFLAGS += -Wl,--no-relax
 
333
Index: config/ChangeLog
 
334
===================================================================
 
335
--- a/src/config/ChangeLog      (.../tags/gcc_4_8_3_release)
 
336
+++ b/src/config/ChangeLog      (.../branches/gcc-4_8-branch)
 
337
@@ -1,3 +1,8 @@
 
338
+2014-07-26  Uros Bizjak  <ubizjak@gmail.com>
 
339
+
 
340
+       PR target/47230
 
341
+       * mh-alpha-linux: New file.
 
342
+
 
343
 2014-05-22  Release Manager
 
344
 
 
345
        * GCC 4.8.3 released.
 
346
Index: libjava/classpath
 
347
===================================================================
 
348
--- a/src/libjava/classpath     (.../tags/gcc_4_8_3_release)
 
349
+++ b/src/libjava/classpath     (.../branches/gcc-4_8-branch)
 
350
 
 
351
Property changes on: libjava/classpath
 
352
___________________________________________________________________
 
353
Modified: svn:mergeinfo
 
354
   Merged /trunk/libjava/classpath:r211733
 
355
Index: configure
 
356
===================================================================
 
357
--- a/src/configure     (.../tags/gcc_4_8_3_release)
 
358
+++ b/src/configure     (.../branches/gcc-4_8-branch)
 
359
@@ -3834,6 +3834,9 @@
 
360
   *-mingw*)
 
361
     host_makefile_frag="config/mh-mingw"
 
362
     ;;
 
363
+  alpha*-*-linux*)
 
364
+    host_makefile_frag="config/mh-alpha-linux"
 
365
+    ;;
 
366
   hppa*-hp-hpux10*)
 
367
     host_makefile_frag="config/mh-pa-hpux10"
 
368
     ;;
 
369
Index: gcc/DATESTAMP
 
370
===================================================================
 
371
--- a/src/gcc/DATESTAMP (.../tags/gcc_4_8_3_release)
 
372
+++ b/src/gcc/DATESTAMP (.../branches/gcc-4_8-branch)
 
373
@@ -1 +1 @@
 
374
-20140522
 
375
+20140728
 
376
Index: gcc/ipa-cp.c
 
377
===================================================================
 
378
--- a/src/gcc/ipa-cp.c  (.../tags/gcc_4_8_3_release)
 
379
+++ b/src/gcc/ipa-cp.c  (.../branches/gcc-4_8-branch)
 
380
@@ -447,6 +447,8 @@
 
381
   else if (!opt_for_fn (node->symbol.decl, optimize)
 
382
           || !opt_for_fn (node->symbol.decl, flag_ipa_cp))
 
383
     reason = "non-optimized function";
 
384
+  else if (node->tm_clone)
 
385
+    reason = "transactional memory clone";
 
386
 
 
387
   if (reason && dump_file && !node->alias && !node->thunk.thunk_p)
 
388
     fprintf (dump_file, "Function %s/%i is not versionable, reason: %s.\n",
 
389
Index: gcc/omp-low.c
 
390
===================================================================
 
391
--- a/src/gcc/omp-low.c (.../tags/gcc_4_8_3_release)
 
392
+++ b/src/gcc/omp-low.c (.../branches/gcc-4_8-branch)
 
393
@@ -1586,7 +1586,6 @@
 
394
   TREE_STATIC (decl) = 1;
 
395
   TREE_USED (decl) = 1;
 
396
   DECL_ARTIFICIAL (decl) = 1;
 
397
-  DECL_NAMELESS (decl) = 1;
 
398
   DECL_IGNORED_P (decl) = 0;
 
399
   TREE_PUBLIC (decl) = 0;
 
400
   DECL_UNINLINABLE (decl) = 1;
 
401
Index: gcc/toplev.c
 
402
===================================================================
 
403
--- a/src/gcc/toplev.c  (.../tags/gcc_4_8_3_release)
 
404
+++ b/src/gcc/toplev.c  (.../branches/gcc-4_8-branch)
 
405
@@ -1036,16 +1036,19 @@
 
406
 
 
407
   if (warn_stack_usage >= 0)
 
408
     {
 
409
+      const location_t loc = DECL_SOURCE_LOCATION (current_function_decl);
 
410
+
 
411
       if (stack_usage_kind == DYNAMIC)
 
412
-       warning (OPT_Wstack_usage_, "stack usage might be unbounded");
 
413
+       warning_at (loc, OPT_Wstack_usage_, "stack usage might be unbounded");
 
414
       else if (stack_usage > warn_stack_usage)
 
415
        {
 
416
          if (stack_usage_kind == DYNAMIC_BOUNDED)
 
417
-           warning (OPT_Wstack_usage_, "stack usage might be %wd bytes",
 
418
-                    stack_usage);
 
419
+           warning_at (loc,
 
420
+                       OPT_Wstack_usage_, "stack usage might be %wd bytes",
 
421
+                       stack_usage);
 
422
          else
 
423
-           warning (OPT_Wstack_usage_, "stack usage is %wd bytes",
 
424
-                    stack_usage);
 
425
+           warning_at (loc, OPT_Wstack_usage_, "stack usage is %wd bytes",
 
426
+                       stack_usage);
 
427
        }
 
428
     }
 
429
 }
 
430
Index: gcc/ChangeLog
 
431
===================================================================
 
432
--- a/src/gcc/ChangeLog (.../tags/gcc_4_8_3_release)
 
433
+++ b/src/gcc/ChangeLog (.../branches/gcc-4_8-branch)
 
434
@@ -1,3 +1,340 @@
 
435
+2014-07-25  Uros Bizjak  <ubizjak@gmail.com>
 
436
+
 
437
+       * config/alpha/elf.h: Define TARGET_UNWIND_TABLES_DEFAULT.
 
438
+
 
439
+2014-07-24  Kyle McMartin  <kyle@redhat.com>
 
440
+
 
441
+       * config/aarch64/aarch64-linux.h (TARGET_ASM_FILE_END): Define.
 
442
+
 
443
+2014-07-24  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
444
+
 
445
+       * config/rs6000/rs6000-protos.h (rs6000_special_adjust_field_align_p):
 
446
+       Add prototype.
 
447
+       * config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p): New
 
448
+       function.  Issue -Wpsabi warning if future GCC releases will use
 
449
+       different field alignment rules for this type.
 
450
+       * config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Call it.
 
451
+       * config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
 
452
+       * config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Likewise.
 
453
+
 
454
+2014-07-24  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
455
+
 
456
+       * config/rs6000/rs6000.c (rs6000_function_arg_boundary): Issue
 
457
+       -Wpsabi note when encountering a type where future GCC releases
 
458
+       will apply different alignment requirements.
 
459
+
 
460
+2014-07-24  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
461
+
 
462
+       * config/rs6000/rs6000.c (rs6000_function_arg): If a float argument
 
463
+       does not fit fully into floating-point registers, and there is still
 
464
+       space in the register parameter area, issue -Wpsabi note that the ABI
 
465
+       will change in a future GCC release.
 
466
+
 
467
+2014-07-23  Sebastian Huber  <sebastian.huber@embedded-brains.de>
 
468
+
 
469
+       * config/arm/t-rtems-eabi: Add
 
470
+       mthumb/march=armv7-r/mfpu=vfpv3-d16/mfloat-abi=hard,
 
471
+       mthumb/march=armv7-m/mfpu=fpv4-sp-d16/mfloat-abi=hard,
 
472
+       mbig-endian/mthumb/march=armv7-r, and
 
473
+       mbig-endian/mthumb/march=armv7-r/mfpu=vfpv3-d16/mfloat-abi=hard
 
474
+       multilibs.
 
475
+
 
476
+2014-07-21  Peter Bergner  <bergner@vnet.ibm.com>
 
477
+
 
478
+       * config/rs6000/sysv4.h (LIBASAN_EARLY_SPEC): Define.
 
479
+       (LIBTSAN_EARLY_SPEC): Likewise.
 
480
+       (STATIC_LIBASAN_LIBS): Likewise.
 
481
+       (STATIC_LIBTSAN_LIBS): Likewise.
 
482
+
 
483
+2014-07-19  Eric Botcazou  <ebotcazou@adacore.com>
 
484
+
 
485
+       * toplev.c (output_stack_usage): Adjust the location of the warning.
 
486
+
 
487
+2014-07-19  Daniel Cederman  <cederman@gaisler.com>
 
488
+
 
489
+       * config/sparc/sync.md (*membar_storeload_leon3): New insn.
 
490
+       (*membar_storeload): Disable for LEON3.
 
491
+
 
492
+2014-07-17  Richard Biener  <rguenther@suse.de>
 
493
+
 
494
+       PR rtl-optimization/61801
 
495
+       * sched-deps.c (sched_analyze_2): For ASM_OPERANDS and
 
496
+       ASM_INPUT don't set reg_pending_barrier if it appears in a
 
497
+       debug-insn.
 
498
+
 
499
+2014-07-16  Jakub Jelinek  <jakub@redhat.com>
 
500
+
 
501
+       * omp-low.c (create_omp_child_function): Don't set DECL_NAMELESS
 
502
+       on the FUNCTION_DECL.
 
503
+
 
504
+2014-07-10  Tom G. Christensen  <tgc@jupiterrise.com>
 
505
+
 
506
+       * doc/install.texi: Remove links to defunct package providers for
 
507
+       Solaris.
 
508
+
 
509
+2014-07-10  Eric Botcazou  <ebotcazou@adacore.com>
 
510
+
 
511
+       PR middle-end/53590
 
512
+       * function.c (allocate_struct_function): Revert r188667 change.
 
513
+
 
514
+2014-07-04  Jakub Jelinek  <jakub@redhat.com>
 
515
+
 
516
+       PR tree-optimization/61684
 
517
+       * tree-ssa-ifcombine.c (recognize_single_bit_test): Make sure
 
518
+       rhs1 of conversion is a SSA_NAME before using SSA_NAME_DEF_STMT on it.
 
519
+
 
520
+2014-06-30  Thomas Preud'homme  <thomas.preudhomme@arm.com>
 
521
+
 
522
+       Backport from Mainline
 
523
+       2014-06-20  Jakub Jelinek  <jakub@redhat.com>
 
524
+       2014-06-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
 
525
+
 
526
+       PR tree-optimization/61306
 
527
+       * tree-ssa-math-opts.c (struct symbolic_number): Store type of
 
528
+       expression instead of its size.
 
529
+       (do_shift_rotate): Adapt to change in struct symbolic_number. Return
 
530
+       false to prevent optimization when the result is unpredictable due to
 
531
+       arithmetic right shift of signed type with highest byte is set.
 
532
+       (verify_symbolic_number_p): Adapt to change in struct symbolic_number.
 
533
+       (find_bswap_1): Likewise. Return NULL to prevent optimization when the
 
534
+       result is unpredictable due to sign extension.
 
535
+       (find_bswap): Adapt to change in struct symbolic_number.
 
536
+
 
537
+2014-06-27  Uros Bizjak  <ubizjak@gmail.com>
 
538
+
 
539
+       Backport from mainline
 
540
+       2014-06-26  Uros Bizjak  <ubizjak@gmail.com>
 
541
+
 
542
+       PR target/61586
 
543
+       * config/alpha/alpha.c (alpha_handle_trap_shadows): Handle BARRIER RTX.
 
544
+
 
545
+2014-06-26  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
546
+
 
547
+       PR target/61542
 
548
+       * config/rs6000/vsx.md (vsx_extract_v4sf): Fix bug with element
 
549
+       extraction other than index 3.
 
550
+
 
551
+2014-06-24  Jakub Jelinek  <jakub@redhat.com>
 
552
+
 
553
+       PR target/61570
 
554
+       * config/i386/driver-i386.c (host_detect_local_cpu): For unknown
 
555
+       model family 6 CPU with has_longmode never use a CPU without
 
556
+       64-bit support.
 
557
+
 
558
+2014-06-20  Chung-Lin Tang  <cltang@codesourcery.com>
 
559
+
 
560
+       Backport from mainline
 
561
+
 
562
+       2014-06-20  Julian Brown  <julian@codesourcery.com>
 
563
+                   Chung-Lin Tang  <cltang@codesourcery.com>
 
564
+
 
565
+       * config/arm/arm.c (arm_output_mi_thunk): Fix offset for
 
566
+       TARGET_THUMB1_ONLY. Add comments.
 
567
+
 
568
+2014-06-18  Uros Bizjak  <ubizjak@gmail.com>
 
569
+
 
570
+       Backport from mainline
 
571
+       2014-06-06  Uros Bizjak  <ubizjak@gmail.com>
 
572
+
 
573
+       PR target/61423
 
574
+       * config/i386/i386.md (*floatunssi<mode>2_i387_with_xmm): New
 
575
+       define_insn_and_split pattern, merged from *floatunssi<mode>2_1
 
576
+       and corresponding splitters.  Zero extend general register
 
577
+       or memory input operand to XMM temporary.  Enable for
 
578
+       TARGET_SSE2 and TARGET_INTER_UNIT_MOVES_TO_VEC only.
 
579
+       (floatunssi<mode>2): Update expander predicate.
 
580
+
 
581
+2014-06-18  Richard Henderson  <rth@redhat.com>
 
582
+
 
583
+       PR target/61545
 
584
+       * config/aarch64/aarch64.md (tlsdesc_small): Clobber CC_REGNUM.
 
585
+
 
586
+2014-06-17  Nagaraju Mekala <nagaraju.mekala@xilinx.com>
 
587
+
 
588
+       Revert on gcc-4_8-branch.
 
589
+       * config/microblaze/microblaze.md: Add movsi4_rev insn pattern.
 
590
+       * config/microblaze/predicates.md: Add reg_or_mem_operand predicate.
 
591
+
 
592
+2014-06-17  Yufeng Zhang  <yufeng.zhang@arm.com>
 
593
+
 
594
+       Backport from mainline
 
595
+
 
596
+       PR target/61483
 
597
+       * config/aarch64/aarch64.c (aarch64_layout_arg): Add new local
 
598
+       variable 'size'; calculate 'size' right in the front; use
 
599
+       'size' to compute 'nregs' (when 'allocate_ncrn != 0') and
 
600
+       pcum->aapcs_stack_words.
 
601
+
 
602
+2014-06-13  Peter Bergner  <bergner@vnet.ibm.com>
 
603
+
 
604
+       Backport from mainline
 
605
+
 
606
+       2014-06-13  Peter Bergner  <bergner@vnet.ibm.com>
 
607
+       PR target/61415
 
608
+       * config/rs6000/rs6000-builtin.def (BU_MISC_1): Delete.
 
609
+       (BU_MISC_2): Rename to ...
 
610
+       (BU_LDBL128_2): ... this.
 
611
+       * config/rs6000/rs6000.h (RS6000_BTM_LDBL128): New define.
 
612
+       (RS6000_BTM_COMMON): Add RS6000_BTM_LDBL128.
 
613
+       * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Handle
 
614
+       RS6000_BTM_LDBL128.
 
615
+       (rs6000_invalid_builtin): Add long double 128-bit builtin support.
 
616
+       (rs6000_builtin_mask_names): Add RS6000_BTM_LDBL128.
 
617
+       * config/rs6000/rs6000.md (unpacktf_0): Remove define)expand.
 
618
+       (unpacktf_1): Likewise.
 
619
+       * doc/extend.texi (__builtin_longdouble_dw0): Remove documentation.
 
620
+       (__builtin_longdouble_dw1): Likewise.
 
621
+       * doc/sourcebuild.texi (longdouble128): Document.
 
622
+
 
623
+2014-06-13  Jason Merrill  <jason@redhat.com>
 
624
+
 
625
+       PR c++/60731
 
626
+       * common.opt (-fno-gnu-unique): Add.
 
627
+       * config/elfos.h (USE_GNU_UNIQUE_OBJECT): Check it.
 
628
+
 
629
+2014-06-12  Georg-Johann Lay  <avr@gjlay.de>
 
630
+
 
631
+       Backport from 2014-05-09 trunk r210272
 
632
+
 
633
+       * config/avr/avr-fixed.md (round<mode>3): Use -1U instead of -1 in
 
634
+       unsigned int initializers for regno_in, regno_out.
 
635
+
 
636
+       Backport from 2014-05-14 trunk r210418
 
637
+       * config/avr/avr.h (REG_CLASS_CONTENTS): Use unsigned suffix for
 
638
+       shifted values to avoid build warning.
 
639
+
 
640
+       Backport from 2014-06-12 trunk r211491
 
641
+
 
642
+       PR target/61443
 
643
+       * config/avr/avr.md (push<mode>1): Avoid (subreg(mem)) when
 
644
+       loading from address spaces.
 
645
+
 
646
+2014-06-12  Alan Modra  <amodra@gmail.com>
 
647
+
 
648
+       PR target/61300
 
649
+       * doc/tm.texi.in (INCOMING_REG_PARM_STACK_SPACE): Document.
 
650
+       * doc/tm.texi: Regenerate.
 
651
+       * function.c (INCOMING_REG_PARM_STACK_SPACE): Provide default.
 
652
+       Use throughout in place of REG_PARM_STACK_SPACE.
 
653
+       * config/rs6000/rs6000.c (rs6000_reg_parm_stack_space): Add
 
654
+       "incoming" param.  Pass to rs6000_function_parms_need_stack.
 
655
+       (rs6000_function_parms_need_stack): Add "incoming" param, ignore
 
656
+       prototype_p when incoming.  Use function decl when incoming
 
657
+       to handle K&R style functions.
 
658
+       * config/rs6000/rs6000.h (REG_PARM_STACK_SPACE): Adjust.
 
659
+       (INCOMING_REG_PARM_STACK_SPACE): Define.
 
660
+
 
661
+2014-06-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
662
+
 
663
+       Back port from trunk
 
664
+       2014-06-06  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
665
+
 
666
+       PR target/61431
 
667
+       * config/rs6000/vsx.md (VSX_LE): Split VSX_D into 2 separate
 
668
+       iterators, VSX_D that handles 64-bit types, and VSX_LE that
 
669
+       handles swapping the two 64-bit double words on little endian
 
670
+       systems.  Include V1TImode and optionally TImode in VSX_LE so that
 
671
+       these types are properly swapped.  Change all of the insns and
 
672
+       splits that do the 64-bit swaps to use VSX_LE.
 
673
+       (vsx_le_perm_load_<mode>): Likewise.
 
674
+       (vsx_le_perm_store_<mode>): Likewise.
 
675
+       (splitters for little endian memory operations): Likewise.
 
676
+       (vsx_xxpermdi2_le_<mode>): Likewise.
 
677
+       (vsx_lxvd2x2_le_<mode>): Likewise.
 
678
+       (vsx_stxvd2x2_le_<mode>): Likewise.
 
679
+
 
680
+2014-06-05  Martin Jambor  <mjambor@suse.cz>
 
681
+
 
682
+       PR ipa/61393
 
683
+       * ipa-cp.c (determine_versionability): Pretend that tm_clones are
 
684
+       not versionable.
 
685
+
 
686
+2014-06-04  Richard Biener  <rguenther@suse.de>
 
687
+
 
688
+       PR tree-optimization/61383
 
689
+       * tree-ssa-ifcombine.c (bb_no_side_effects_p): Make sure
 
690
+       stmts can't trap.
 
691
+
 
692
+2014-06-03  Andrey Belevantsev  <abel@ispras.ru>
 
693
+
 
694
+       Backport from mainline
 
695
+       2014-05-14  Andrey Belevantsev  <abel@ispras.ru>
 
696
+
 
697
+       PR rtl-optimization/60866
 
698
+       * sel-sched-ir (sel_init_new_insn): New parameter old_seqno.
 
699
+       Default it to -1.  Pass it down to init_simplejump_data.
 
700
+       (init_simplejump_data): New parameter old_seqno.  Pass it down
 
701
+       to get_seqno_for_a_jump.
 
702
+       (get_seqno_for_a_jump): New parameter old_seqno.  Use it for
 
703
+       initializing new jump seqno as a last resort.  Add comment.
 
704
+       (sel_redirect_edge_and_branch): Save old seqno of the conditional
 
705
+       jump and pass it down to sel_init_new_insn.
 
706
+       (sel_redirect_edge_and_branch_force): Likewise.
 
707
+
 
708
+2014-06-03  Andrey Belevantsev  <abel@ispras.ru>
 
709
+
 
710
+       Backport from mainline
 
711
+       2014-05-14  Andrey Belevantsev  <abel@ispras.ru>
 
712
+
 
713
+       PR rtl-optimization/60901
 
714
+       * config/i386/i386.c (ix86_dependencies_evaluation_hook): Check that
 
715
+       bb predecessor belongs to the same scheduling region.  Adjust comment.
 
716
+
 
717
+2014-06-03  Uros Bizjak  <ubizjak@gmail.com>
 
718
+
 
719
+       Backport from mainline
 
720
+       2014-06-02  Uros Bizjak  <ubizjak@gmail.com>
 
721
+
 
722
+       PR target/61239
 
723
+       * config/i386/i386.c (ix86_expand_vec_perm) [case V32QImode]: Use
 
724
+       GEN_INT (-128) instead of GEN_INT (128) to set MSB of QImode constant.
 
725
+
 
726
+2014-05-28  Guozhi Wei  <carrot@google.com>
 
727
+
 
728
+       PR target/61202
 
729
+       * config/aarch64/arm_neon.h (vqdmulh_n_s16): Change the last operand's
 
730
+       constraint.
 
731
+       (vqdmulhq_n_s16): Likewise.
 
732
+
 
733
+2014-05-28  Eric Botcazou  <ebotcazou@adacore.com>
 
734
+
 
735
+       Backport from mainline
 
736
+       2014-05-27  Eric Botcazou  <ebotcazou@adacore.com>
 
737
+
 
738
+       * double-int.c (div_and_round_double) <ROUND_DIV_EXPR>: Use the proper
 
739
+       predicate to detect a negative quotient.
 
740
+
 
741
+2014-05-28  Georg-Johann Lay  <avr@gjlay.de>
 
742
+
 
743
+       PR target/61044
 
744
+       * doc/extend.texi (Local Labels): Note that label differences are
 
745
+       not supported for AVR.
 
746
+
 
747
+2014-05-26  Michael Tautschnig  <mt@debian.org>
 
748
+
 
749
+       PR target/61249
 
750
+       * doc/extend.texi (X86 Built-in Functions): Fix parameter lists of
 
751
+       __builtin_ia32_vfrczs[sd] and __builtin_ia32_mpsadbw256.
 
752
+
 
753
+2014-05-23  Alan Modra  <amodra@gmail.com>
 
754
+
 
755
+       PR target/61231
 
756
+       * config/rs6000/rs6000.c (mem_operand_gpr): Handle SImode.
 
757
+       * config/rs6000/rs6000.md (extendsidi2_lfiwax, extendsidi2_nocell):
 
758
+       Use "Y" constraint rather than "m".
 
759
+
 
760
+2014-05-22  Peter Bergner  <bergner@vnet.ibm.com>
 
761
+
 
762
+       Backport from mainline
 
763
+       2014-05-22  Peter Bergner  <bergner@vnet.ibm.com>
 
764
+
 
765
+       * config/rs6000/htm.md (ttest): Use correct shift value to get CR0.
 
766
+
 
767
+2014-05-22  Richard Earnshaw  <rearnsha@arm.com>
 
768
+
 
769
+       PR target/61208
 
770
+       * arm.md (arm_cmpdi_unsigned): Fix length calculation for Thumb2.
 
771
+
 
772
 2014-05-22  Release Manager
 
773
 
 
774
        * GCC 4.8.3 released.
 
775
Index: gcc/testsuite/gcc.target/powerpc/tfmode_off.c
 
776
===================================================================
 
777
--- a/src/gcc/testsuite/gcc.target/powerpc/tfmode_off.c (.../tags/gcc_4_8_3_release)
 
778
+++ b/src/gcc/testsuite/gcc.target/powerpc/tfmode_off.c (.../branches/gcc-4_8-branch)
 
779
@@ -1,6 +1,7 @@
 
780
 /* { dg-do assemble } */
 
781
 /* { dg-skip-if "" { powerpc-ibm-aix* } { "*" } { "" } } */
 
782
 /* { dg-skip-if "no TFmode" { powerpc-*-eabi* } { "*" } { "" } } */
 
783
+/* { dg-require-effective-target longdouble128 } */
 
784
 /* { dg-options "-O2 -fno-align-functions -mtraceback=no -save-temps" } */
 
785
 
 
786
 typedef float TFmode __attribute__ ((mode (TF)));
 
787
Index: gcc/testsuite/gcc.target/powerpc/pack02.c
 
788
===================================================================
 
789
--- a/src/gcc/testsuite/gcc.target/powerpc/pack02.c     (.../tags/gcc_4_8_3_release)
 
790
+++ b/src/gcc/testsuite/gcc.target/powerpc/pack02.c     (.../branches/gcc-4_8-branch)
 
791
@@ -2,6 +2,7 @@
 
792
 /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
 
793
 /* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
 
794
 /* { dg-require-effective-target powerpc_fprs } */
 
795
+/* { dg-require-effective-target longdouble128 } */
 
796
 /* { dg-options "-O2 -mhard-float" } */
 
797
 
 
798
 #include <stddef.h>
 
799
Index: gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c
 
800
===================================================================
 
801
--- a/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c   (.../tags/gcc_4_8_3_release)
 
802
+++ b/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-1.c   (.../branches/gcc-4_8-branch)
 
803
@@ -0,0 +1,12 @@
 
804
+/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
 
805
+/* { dg-options "-mabi=elfv2" } */
 
806
+
 
807
+struct f8
 
808
+  {
 
809
+    float x[8];
 
810
+  };
 
811
+
 
812
+void test (struct f8 a, struct f8 b) /* { dg-message "note: the ABI of passing homogeneous float aggregates will change" } */
 
813
+{
 
814
+}
 
815
+
 
816
Index: gcc/testsuite/gcc.target/powerpc/htm-ttest.c
 
817
===================================================================
 
818
--- a/src/gcc/testsuite/gcc.target/powerpc/htm-ttest.c  (.../tags/gcc_4_8_3_release)
 
819
+++ b/src/gcc/testsuite/gcc.target/powerpc/htm-ttest.c  (.../branches/gcc-4_8-branch)
 
820
@@ -0,0 +1,14 @@
 
821
+/* { dg-do compile { target { powerpc*-*-* } } } */
 
822
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
 
823
+/* { dg-require-effective-target powerpc_htm_ok } */
 
824
+/* { dg-options "-O2 -mhtm" } */
 
825
+
 
826
+/* { dg-final { scan-assembler "rlwinm r?\[0-9\]+,r?\[0-9\]+,3,30,31" { target { ilp32 } } } } */
 
827
+/* { dg-final { scan-assembler "rldicl r?\[0-9\]+,r?\[0-9\]+,35,62" { target { lp64 } } } } */
 
828
+
 
829
+#include <htmintrin.h>
 
830
+long
 
831
+ttest (void)
 
832
+{
 
833
+  return _HTM_STATE(__builtin_ttest());
 
834
+}
 
835
Index: gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c
 
836
===================================================================
 
837
--- a/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c   (.../tags/gcc_4_8_3_release)
 
838
+++ b/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-2.c   (.../branches/gcc-4_8-branch)
 
839
@@ -0,0 +1,12 @@
 
840
+/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
 
841
+/* { dg-options "-mno-compat-align-parm" } */
 
842
+
 
843
+struct test
 
844
+  {
 
845
+    long a __attribute__((aligned (16)));
 
846
+  };
 
847
+
 
848
+void test (struct test a) /* { dg-message "note: the ABI of passing aggregates with 16-byte alignment will change" } */
 
849
+{
 
850
+}
 
851
+
 
852
Index: gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c
 
853
===================================================================
 
854
--- a/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c   (.../tags/gcc_4_8_3_release)
 
855
+++ b/src/gcc/testsuite/gcc.target/powerpc/ppc64-abi-warn-3.c   (.../branches/gcc-4_8-branch)
 
856
@@ -0,0 +1,9 @@
 
857
+/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */
 
858
+/* { dg-require-effective-target powerpc_altivec_ok } */
 
859
+/* { dg-options "-maltivec" } */
 
860
+
 
861
+struct test
 
862
+  {
 
863
+    int a __attribute__((vector_size (8)));
 
864
+  }; /* { dg-message "note: the layout of aggregates containing vectors with 8-byte alignment will change" } */
 
865
+
 
866
Index: gcc/testsuite/gcc.target/alpha/pr61586.c
 
867
===================================================================
 
868
--- a/src/gcc/testsuite/gcc.target/alpha/pr61586.c      (.../tags/gcc_4_8_3_release)
 
869
+++ b/src/gcc/testsuite/gcc.target/alpha/pr61586.c      (.../branches/gcc-4_8-branch)
 
870
@@ -0,0 +1,10 @@
 
871
+/* { dg-do compile } */
 
872
+/* { dg-options "-O2 -mieee" } */
 
873
+
 
874
+void foo (int *dimensions, double **params, int hh)
 
875
+{
 
876
+  if (params[hh])
 
877
+    ;
 
878
+  else if (dimensions[hh] > 0)
 
879
+    params[hh][0] = 1.0f;
 
880
+}
 
881
Index: gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-14.c
 
882
===================================================================
 
883
--- a/src/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-14.c  (.../tags/gcc_4_8_3_release)
 
884
+++ b/src/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-14.c  (.../branches/gcc-4_8-branch)
 
885
@@ -0,0 +1,35 @@
 
886
+/* Test AAPCS64 layout and __builtin_va_start.
 
887
+
 
888
+   Pass named HFA/HVA argument on stack.  */
 
889
+
 
890
+/* { dg-do run { target aarch64*-*-* } } */
 
891
+
 
892
+#ifndef IN_FRAMEWORK
 
893
+#define AAPCS64_TEST_STDARG
 
894
+#define TESTFILE "va_arg-14.c"
 
895
+#include "type-def.h"
 
896
+
 
897
+struct hfa_fx2_t hfa_fx2 = {1.2f, 2.2f};
 
898
+struct hfa_fx3_t hfa_fx3 = {3.2f, 4.2f, 5.2f};
 
899
+vf4_t float32x4 = {6.2f, 7.2f, 8.2f, 9.2f};
 
900
+vf4_t float32x4_2 = {10.2f, 11.2f, 12.2f, 13.2f};
 
901
+
 
902
+#include "abitest.h"
 
903
+#else
 
904
+  ARG (float, 1.0f, S0, 0)
 
905
+  ARG (float, 2.0f, S1, 1)
 
906
+  ARG (float, 3.0f, S2, 2)
 
907
+  ARG (float, 4.0f, S3, 3)
 
908
+  ARG (float, 5.0f, S4, 4)
 
909
+  ARG (float, 6.0f, S5, 5)
 
910
+  ARG (float, 7.0f, S6, 6)
 
911
+  ARG (struct hfa_fx3_t, hfa_fx3, STACK, 7)
 
912
+  /* Previous argument size has been rounded up to the nearest multiple of
 
913
+     8 bytes.  */
 
914
+  ARG (struct hfa_fx2_t, hfa_fx2, STACK + 16, 8)
 
915
+  /* NSAA is rounded up to the nearest natural alignment of float32x4.  */
 
916
+  ARG (vf4_t, float32x4, STACK + 32, 9)
 
917
+  ARG (vf4_t, float32x4_2, STACK + 48, LAST_NAMED_ARG_ID)
 
918
+  DOTS
 
919
+  LAST_ANON (double, 123456789.987, STACK + 64, 11)
 
920
+#endif
 
921
Index: gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h
 
922
===================================================================
 
923
--- a/src/gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h   (.../tags/gcc_4_8_3_release)
 
924
+++ b/src/gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h   (.../branches/gcc-4_8-branch)
 
925
@@ -34,6 +34,13 @@
 
926
   float b;
 
927
 };
 
928
 
 
929
+struct hfa_fx3_t
 
930
+{
 
931
+  float a;
 
932
+  float b;
 
933
+  float c;
 
934
+};
 
935
+
 
936
 struct hfa_dx2_t
 
937
 {
 
938
   double a;
 
939
Index: gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-13.c
 
940
===================================================================
 
941
--- a/src/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-13.c  (.../tags/gcc_4_8_3_release)
 
942
+++ b/src/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-13.c  (.../branches/gcc-4_8-branch)
 
943
@@ -0,0 +1,59 @@
 
944
+/* Test AAPCS64 layout and __builtin_va_start.
 
945
+
 
946
+   Pass named HFA/HVA argument on stack.  */
 
947
+
 
948
+/* { dg-do run { target aarch64*-*-* } } */
 
949
+
 
950
+#ifndef IN_FRAMEWORK
 
951
+#define AAPCS64_TEST_STDARG
 
952
+#define TESTFILE "va_arg-13.c"
 
953
+
 
954
+struct float_float_t
 
955
+{
 
956
+  float a;
 
957
+  float b;
 
958
+} float_float;
 
959
+
 
960
+union float_int_t
 
961
+{
 
962
+  float b8;
 
963
+  int b5;
 
964
+} float_int;
 
965
+
 
966
+#define HAS_DATA_INIT_FUNC
 
967
+void
 
968
+init_data ()
 
969
+{
 
970
+  float_float.a = 1.2f;
 
971
+  float_float.b = 2.2f;
 
972
+
 
973
+  float_int.b8 = 4983.80f;
 
974
+}
 
975
+
 
976
+#include "abitest.h"
 
977
+#else
 
978
+  ARG (float, 1.0f, S0, 0)
 
979
+  ARG (float, 2.0f, S1, 1)
 
980
+  ARG (float, 3.0f, S2, 2)
 
981
+  ARG (float, 4.0f, S3, 3)
 
982
+  ARG (float, 5.0f, S4, 4)
 
983
+  ARG (float, 6.0f, S5, 5)
 
984
+  ARG (float, 7.0f, S6, 6)
 
985
+  ARG (struct float_float_t, float_float, STACK, 7)
 
986
+  ARG (int,  9, W0, 8)
 
987
+  ARG (int, 10, W1, 9)
 
988
+  ARG (int, 11, W2, 10)
 
989
+  ARG (int, 12, W3, 11)
 
990
+  ARG (int, 13, W4, 12)
 
991
+  ARG (int, 14, W5, 13)
 
992
+  ARG (int, 15, W6, LAST_NAMED_ARG_ID)
 
993
+  DOTS
 
994
+  /* Note on the reason of using 'X7' instead of 'W7' here:
 
995
+     Using 'X7' makes sure the test works in the big-endian mode.
 
996
+     According to PCS rules B.4 and C.10, the size of float_int is rounded
 
997
+     to 8 bytes and prepared in the register X7 as if loaded via LDR from
 
998
+     the memory, with the content of the other 4 bytes unspecified.  The
 
999
+     test framework will only compare the 4 relavent bytes.  */
 
1000
+  ANON (union float_int_t, float_int, X7, 15)
 
1001
+  LAST_ANON (long long, 12683143434LL, STACK + 8, 16)
 
1002
+#endif
 
1003
Index: gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-15.c
 
1004
===================================================================
 
1005
--- a/src/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-15.c  (.../tags/gcc_4_8_3_release)
 
1006
+++ b/src/gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-15.c  (.../branches/gcc-4_8-branch)
 
1007
@@ -0,0 +1,39 @@
 
1008
+/* Test AAPCS64 layout and __builtin_va_start.
 
1009
+
 
1010
+   Pass named __128int argument on stack.  */
 
1011
+
 
1012
+/* { dg-do run { target aarch64*-*-* } } */
 
1013
+
 
1014
+#ifndef IN_FRAMEWORK
 
1015
+#define AAPCS64_TEST_STDARG
 
1016
+#define TESTFILE "va_arg-15.c"
 
1017
+#include "type-def.h"
 
1018
+
 
1019
+union int128_t qword;
 
1020
+
 
1021
+#define HAS_DATA_INIT_FUNC
 
1022
+void
 
1023
+init_data ()
 
1024
+{
 
1025
+  /* Init signed quad-word integer.  */
 
1026
+  qword.l64 = 0xfdb9753102468aceLL;
 
1027
+  qword.h64 = 0xeca8642013579bdfLL;
 
1028
+}
 
1029
+
 
1030
+#include "abitest.h"
 
1031
+#else
 
1032
+  ARG (int, 1, W0, 0)
 
1033
+  ARG (int, 2, W1, 1)
 
1034
+  ARG (int, 3, W2, 2)
 
1035
+  ARG (int, 4, W3, 3)
 
1036
+  ARG (int, 5, W4, 4)
 
1037
+  ARG (int, 6, W5, 5)
 
1038
+  ARG (int, 7, W6, 6)
 
1039
+  ARG (__int128, qword.i, STACK, LAST_NAMED_ARG_ID)
 
1040
+  DOTS
 
1041
+#ifndef __AAPCS64_BIG_ENDIAN__
 
1042
+  LAST_ANON (int, 8, STACK + 16, 8)
 
1043
+#else
 
1044
+  LAST_ANON (int, 8, STACK + 20, 8)
 
1045
+#endif
 
1046
+#endif
 
1047
Index: gcc/testsuite/gcc.target/avr/torture/pr61443.c
 
1048
===================================================================
 
1049
--- a/src/gcc/testsuite/gcc.target/avr/torture/pr61443.c        (.../tags/gcc_4_8_3_release)
 
1050
+++ b/src/gcc/testsuite/gcc.target/avr/torture/pr61443.c        (.../branches/gcc-4_8-branch)
 
1051
@@ -0,0 +1,134 @@
 
1052
+/* { dg-do run } */
 
1053
+/* { dg-options "-std=gnu99" } */
 
1054
+
 
1055
+#include <stdlib.h>
 
1056
+#include <stdarg.h>
 
1057
+
 
1058
+#define NC __attribute__((noinline,noclone))
 
1059
+
 
1060
+void NC vfun (char n, ...)
 
1061
+{
 
1062
+  va_list ap;
 
1063
+
 
1064
+  va_start (ap, n);
 
1065
+
 
1066
+  switch (n)
 
1067
+    {
 
1068
+    default:
 
1069
+      abort();
 
1070
+    case 1:
 
1071
+      if (11 != va_arg (ap, int))
 
1072
+        abort();
 
1073
+      break;
 
1074
+    case 2:
 
1075
+      if (2222 != va_arg (ap, int))
 
1076
+        abort();
 
1077
+      break;
 
1078
+    case 3:
 
1079
+      if (333333 != va_arg (ap, __int24))
 
1080
+        abort();
 
1081
+      break;
 
1082
+    case 4:
 
1083
+      if (44444444 != va_arg (ap, long))
 
1084
+        abort();
 
1085
+      break;
 
1086
+    case 8:
 
1087
+      if (8888888888888888 != va_arg (ap, long long))
 
1088
+        abort();
 
1089
+      break;
 
1090
+    }
 
1091
+
 
1092
+  va_end (ap);
 
1093
+}
 
1094
+
 
1095
+
 
1096
+void NC boo_qi (const __flash char *p)
 
1097
+{
 
1098
+  vfun (1, *p);
 
1099
+}
 
1100
+
 
1101
+void NC boox_qi (const __memx char *p)
 
1102
+{
 
1103
+  vfun (1, *p);
 
1104
+}
 
1105
+
 
1106
+void NC boo_hi (const __flash int *p)
 
1107
+{
 
1108
+  vfun (2, *p);
 
1109
+}
 
1110
+
 
1111
+void NC boox_hi (const __memx int *p)
 
1112
+{
 
1113
+  vfun (2, *p);
 
1114
+}
 
1115
+
 
1116
+void NC boo_psi (const __flash __int24 *p)
 
1117
+{
 
1118
+  vfun (3, *p);
 
1119
+}
 
1120
+
 
1121
+void NC boox_psi (const __memx __int24 *p)
 
1122
+{
 
1123
+  vfun (3, *p);
 
1124
+}
 
1125
+
 
1126
+void NC boo_si (const __flash long *p)
 
1127
+{
 
1128
+  vfun (4, *p);
 
1129
+}
 
1130
+
 
1131
+void NC boox_si (const __memx long *p)
 
1132
+{
 
1133
+  vfun (4, *p);
 
1134
+}
 
1135
+
 
1136
+void NC boo_di (const __flash long long *p)
 
1137
+{
 
1138
+  vfun (8, *p);
 
1139
+}
 
1140
+
 
1141
+void NC boox_di (const __memx long long *p)
 
1142
+{
 
1143
+  vfun (8, *p);
 
1144
+}
 
1145
+
 
1146
+const __flash char f_qi = 11;
 
1147
+const __flash int f_hi = 2222;
 
1148
+const __flash __int24 f_psi = 333333;
 
1149
+const __flash long f_si = 44444444;
 
1150
+const __flash long long f_di = 8888888888888888;
 
1151
+
 
1152
+const __memx char x_qi = 11;
 
1153
+const __memx int x_hi = 2222;
 
1154
+const __memx __int24 x_psi = 333333;
 
1155
+const __memx long x_si = 44444444;
 
1156
+const __memx long long x_di = 8888888888888888;
 
1157
+
 
1158
+char r_qi = 11;
 
1159
+int r_hi = 2222;
 
1160
+__int24 r_psi = 333333;
 
1161
+long r_si = 44444444;
 
1162
+long long r_di = 8888888888888888;
 
1163
+
 
1164
+int main (void)
 
1165
+{
 
1166
+  boo_qi (&f_qi);
 
1167
+  boo_hi (&f_hi);
 
1168
+  boo_psi (&f_psi);
 
1169
+  boo_si (&f_si);
 
1170
+  boo_di (&f_di);
 
1171
+
 
1172
+  boox_qi (&x_qi);
 
1173
+  boox_hi (&x_hi);
 
1174
+  boox_psi (&x_psi);
 
1175
+  boox_si (&x_si);
 
1176
+  boox_di (&x_di);
 
1177
+
 
1178
+  boox_qi (&r_qi);
 
1179
+  boox_hi (&r_hi);
 
1180
+  boox_psi (&r_psi);
 
1181
+  boox_si (&r_si);
 
1182
+  boox_di (&r_di);
 
1183
+
 
1184
+  exit (0);
 
1185
+}
 
1186
Index: gcc/testsuite/gcc.target/i386/pr61423.c
 
1187
===================================================================
 
1188
--- a/src/gcc/testsuite/gcc.target/i386/pr61423.c       (.../tags/gcc_4_8_3_release)
 
1189
+++ b/src/gcc/testsuite/gcc.target/i386/pr61423.c       (.../branches/gcc-4_8-branch)
 
1190
@@ -0,0 +1,38 @@
 
1191
+/* PR target/61423 */
 
1192
+/* { dg-do run { target ia32 } } */
 
1193
+/* { dg-options "-O1 -ftree-vectorize -msse2 -mfpmath=387 -mtune=core2" } */
 
1194
+
 
1195
+#define N 1024
 
1196
+static unsigned int A[N];
 
1197
+
 
1198
+double
 
1199
+__attribute__((noinline))
 
1200
+func (void)
 
1201
+{
 
1202
+  unsigned int sum = 0;
 
1203
+  unsigned i;
 
1204
+  double t;
 
1205
+
 
1206
+  for (i = 0; i < N; i++)
 
1207
+    sum += A[i];
 
1208
+
 
1209
+  t = sum;
 
1210
+  return t;
 
1211
+}
 
1212
+
 
1213
+int
 
1214
+main ()
 
1215
+{
 
1216
+  unsigned i;
 
1217
+  double d;
 
1218
+
 
1219
+  for(i = 0; i < N; i++)
 
1220
+    A[i] = 1;
 
1221
+
 
1222
+  d = func();
 
1223
+
 
1224
+  if (d != 1024.0)
 
1225
+    __builtin_abort ();
 
1226
+
 
1227
+  return 0;
 
1228
+}
 
1229
Index: gcc/testsuite/gcc.target/i386/pr60901.c
 
1230
===================================================================
 
1231
--- a/src/gcc/testsuite/gcc.target/i386/pr60901.c       (.../tags/gcc_4_8_3_release)
 
1232
+++ b/src/gcc/testsuite/gcc.target/i386/pr60901.c       (.../branches/gcc-4_8-branch)
 
1233
@@ -0,0 +1,17 @@
 
1234
+/* { dg-options "-O -fselective-scheduling -fschedule-insns -fsel-sched-pipelining -fsel-sched-pipelining-outer-loops -fno-tree-dominator-opts"  } */
 
1235
+
 
1236
+extern int n;
 
1237
+extern void bar (void);
 
1238
+extern int baz (int);
 
1239
+
 
1240
+void
 
1241
+foo (void)
 
1242
+{
 
1243
+  int i, j;
 
1244
+  for (j = 0; j < n; j++)
 
1245
+    {
 
1246
+      for (i = 1; i < j; i++)
 
1247
+       bar ();
 
1248
+      baz (0);
 
1249
+    }
 
1250
+}
 
1251
Index: gcc/testsuite/gcc.target/i386/pr61801.c
 
1252
===================================================================
 
1253
--- a/src/gcc/testsuite/gcc.target/i386/pr61801.c       (.../tags/gcc_4_8_3_release)
 
1254
+++ b/src/gcc/testsuite/gcc.target/i386/pr61801.c       (.../branches/gcc-4_8-branch)
 
1255
@@ -0,0 +1,22 @@
 
1256
+/* { dg-do compile } */
 
1257
+/* { dg-options "-Os -fcompare-debug" } */
 
1258
+
 
1259
+int a, b, c;
 
1260
+void fn1 ()
 
1261
+{
 
1262
+  int d;
 
1263
+  if (fn2 () && !0)
 
1264
+    {
 
1265
+      b = (
 
1266
+          {
 
1267
+          int e;
 
1268
+          fn3 ();
 
1269
+          switch (0)
 
1270
+          default:
 
1271
+          asm volatile("" : "=a"(e) : "0"(a), "i"(0));
 
1272
+          e;
 
1273
+          });
 
1274
+      d = b;
 
1275
+    }
 
1276
+  c = d;
 
1277
+}
 
1278
Index: gcc/testsuite/gcc.target/i386/pr61446.c
 
1279
===================================================================
 
1280
--- a/src/gcc/testsuite/gcc.target/i386/pr61446.c       (.../tags/gcc_4_8_3_release)
 
1281
+++ b/src/gcc/testsuite/gcc.target/i386/pr61446.c       (.../branches/gcc-4_8-branch)
 
1282
@@ -0,0 +1,14 @@
 
1283
+/* PR rtl-optimization/61446 */
 
1284
+
 
1285
+/* { dg-do compile { target { ia32 } } } */
 
1286
+/* { dg-options "-O2 -march=corei7 -mfpmath=387" } */
 
1287
+
 
1288
+unsigned long long
 
1289
+foo (float a)
 
1290
+{
 
1291
+  const double dfa = a;
 
1292
+  const unsigned int hi = dfa / 0x1p32f;
 
1293
+  const unsigned int lo = dfa - (double) hi * 0x1p32f;
 
1294
+
 
1295
+  return ((unsigned long long) hi << (4 * (8))) | lo;
 
1296
+}
 
1297
Index: gcc/testsuite/lib/target-supports.exp
 
1298
===================================================================
 
1299
--- a/src/gcc/testsuite/lib/target-supports.exp (.../tags/gcc_4_8_3_release)
 
1300
+++ b/src/gcc/testsuite/lib/target-supports.exp (.../branches/gcc-4_8-branch)
 
1301
@@ -1790,6 +1790,15 @@
 
1302
     }]
 
1303
 }
 
1304
 
 
1305
+# Return 1 if the target supports long double of 128 bits,
 
1306
+# 0 otherwise.
 
1307
+
 
1308
+proc check_effective_target_longdouble128 { } {
 
1309
+    return [check_no_compiler_messages longdouble128 object {
 
1310
+       int dummy[sizeof(long double) == 16 ? 1 : -1];
 
1311
+    }]
 
1312
+}
 
1313
+
 
1314
 # Return 1 if the target supports double of 64 bits,
 
1315
 # 0 otherwise.
 
1316
 
 
1317
Index: gcc/testsuite/gfortran.dg/default_format_denormal_2.f90
 
1318
===================================================================
 
1319
--- a/src/gcc/testsuite/gfortran.dg/default_format_denormal_2.f90       (.../tags/gcc_4_8_3_release)
 
1320
+++ b/src/gcc/testsuite/gfortran.dg/default_format_denormal_2.f90       (.../branches/gcc-4_8-branch)
 
1321
@@ -1,6 +1,6 @@
 
1322
 ! { dg-require-effective-target fortran_large_real }
 
1323
-! { dg-do run { xfail powerpc*-apple-darwin* powerpc*-*-linux* } }
 
1324
-! Test XFAILed on these platforms because the system's printf() lacks
 
1325
+! { dg-do run { xfail powerpc*-apple-darwin* } }
 
1326
+! Test XFAILed on this platform because the system's printf() lacks
 
1327
 ! proper support for denormalized long doubles. See PR24685
 
1328
 !
 
1329
 ! This tests that the default formats for formatted I/O of reals are
 
1330
Index: gcc/testsuite/gfortran.dg/cray_pointers_10.f90
 
1331
===================================================================
 
1332
--- a/src/gcc/testsuite/gfortran.dg/cray_pointers_10.f90        (.../tags/gcc_4_8_3_release)
 
1333
+++ b/src/gcc/testsuite/gfortran.dg/cray_pointers_10.f90        (.../branches/gcc-4_8-branch)
 
1334
@@ -0,0 +1,18 @@
 
1335
+! { dg-do run }
 
1336
+! { dg-options "-fcray-pointer" }
 
1337
+!
 
1338
+! PR fortran/45187
 
1339
+!
 
1340
+module foo
 
1341
+  implicit none
 
1342
+  real :: a
 
1343
+  pointer(c_a, a)
 
1344
+end module foo
 
1345
+
 
1346
+program test
 
1347
+  use foo
 
1348
+  real :: z
 
1349
+  c_a = loc(z)
 
1350
+  a = 42
 
1351
+  if (z /= 42) call abort
 
1352
+end program test
 
1353
Index: gcc/testsuite/gfortran.dg/dependency_44.f90
 
1354
===================================================================
 
1355
--- a/src/gcc/testsuite/gfortran.dg/dependency_44.f90   (.../tags/gcc_4_8_3_release)
 
1356
+++ b/src/gcc/testsuite/gfortran.dg/dependency_44.f90   (.../branches/gcc-4_8-branch)
 
1357
@@ -0,0 +1,36 @@
 
1358
+! { dg-do run }
 
1359
+! Tests fix for PR61780 in which the loop reversal mechanism was
 
1360
+! not accounting for the first index being an element so that no
 
1361
+! loop in this dimension is created.
 
1362
+!
 
1363
+! Contributed by Manfred Tietze on clf.
 
1364
+!
 
1365
+program prgm3
 
1366
+    implicit none
 
1367
+    integer, parameter :: n = 10, k = 3
 
1368
+    integer :: i, j
 
1369
+    integer, dimension(n,n) :: y
 
1370
+    integer :: res1(n), res2(n)
 
1371
+
 
1372
+1   format(10i5)
 
1373
+
 
1374
+!initialize
 
1375
+    do i=1,n
 
1376
+        do j=1,n
 
1377
+            y(i,j) = n*i + j
 
1378
+        end do
 
1379
+    end do
 
1380
+    res2 = y(k,:)
 
1381
+
 
1382
+!shift right
 
1383
+    y(k,4:n) = y(k,3:n-1)
 
1384
+    y(k,3) = 0
 
1385
+    res1 = y(k,:)
 
1386
+    y(k,:) = res2
 
1387
+    y(k,n:4:-1) = y(k,n-1:3:-1)
 
1388
+    y(k,3) = 0
 
1389
+    res2 = y(k,:)
 
1390
+!    print *, res1
 
1391
+!    print *, res2
 
1392
+    if (any(res1 /= res2)) call abort ()
 
1393
+end program prgm3
 
1394
Index: gcc/testsuite/gfortran.dg/oldstyle_5.f
 
1395
===================================================================
 
1396
--- a/src/gcc/testsuite/gfortran.dg/oldstyle_5.f        (.../tags/gcc_4_8_3_release)
 
1397
+++ b/src/gcc/testsuite/gfortran.dg/oldstyle_5.f        (.../branches/gcc-4_8-branch)
 
1398
@@ -0,0 +1,8 @@
 
1399
+C { dg-do compile }
 
1400
+      TYPE T
 
1401
+      INTEGER A(2)/1,2/ ! { dg-error "Invalid old style initialization for derived type component" }
 
1402
+      END TYPE
 
1403
+      TYPE S
 
1404
+      INTEGER B/1/ ! { dg-error "Invalid old style initialization for derived type component" }
 
1405
+      END TYPE
 
1406
+      END
 
1407
Index: gcc/testsuite/gfortran.dg/nint_2.f90
 
1408
===================================================================
 
1409
--- a/src/gcc/testsuite/gfortran.dg/nint_2.f90  (.../tags/gcc_4_8_3_release)
 
1410
+++ b/src/gcc/testsuite/gfortran.dg/nint_2.f90  (.../branches/gcc-4_8-branch)
 
1411
@@ -4,7 +4,8 @@
 
1412
 ! http://gcc.gnu.org/ml/fortran/2005-04/msg00139.html
 
1413
 !
 
1414
 ! { dg-do run }
 
1415
-! { dg-xfail-run-if "PR 33271, math library bug" { powerpc-ibm-aix powerpc*-*-linux* *-*-mingw* } { "-O0" } { "" } }
 
1416
+! { dg-xfail-run-if "PR 33271, math library bug" { powerpc-ibm-aix powerpc-*-linux* powerpc64-*-linux* *-*-mingw* } { "-O0" } { "" } }
 
1417
+! Note that this doesn't fail on powerpc64le-*-linux*.
 
1418
   real(kind=8) :: a
 
1419
   integer(kind=8) :: i1, i2
 
1420
   real :: b
 
1421
Index: gcc/testsuite/gfortran.dg/allocatable_function_8.f90
 
1422
===================================================================
 
1423
--- a/src/gcc/testsuite/gfortran.dg/allocatable_function_8.f90  (.../tags/gcc_4_8_3_release)
 
1424
+++ b/src/gcc/testsuite/gfortran.dg/allocatable_function_8.f90  (.../branches/gcc-4_8-branch)
 
1425
@@ -0,0 +1,47 @@
 
1426
+! { dg-do run }
 
1427
+! Test the fix for PR61459.
 
1428
+!
 
1429
+! Contributed by John Wingate  <johnww@tds.net>
 
1430
+!
 
1431
+module a
 
1432
+
 
1433
+   implicit none
 
1434
+   private
 
1435
+   public :: f_segfault, f_segfault_plus, f_workaround
 
1436
+   integer, dimension(2,2) :: b = reshape([1,-1,1,1],[2,2])
 
1437
+
 
1438
+contains
 
1439
+
 
1440
+   function f_segfault(x)
 
1441
+      real, dimension(:), allocatable :: f_segfault
 
1442
+      real, dimension(:), intent(in)  :: x
 
1443
+      allocate(f_segfault(2))
 
1444
+      f_segfault = matmul(b,x)
 
1445
+   end function f_segfault
 
1446
+
 
1447
+! Sefaulted without the ALLOCATE as well.
 
1448
+   function f_segfault_plus(x)
 
1449
+      real, dimension(:), allocatable :: f_segfault_plus
 
1450
+      real, dimension(:), intent(in)  :: x
 
1451
+      f_segfault_plus = matmul(b,x)
 
1452
+   end function f_segfault_plus
 
1453
+
 
1454
+   function f_workaround(x)
 
1455
+      real, dimension(:), allocatable :: f_workaround
 
1456
+      real, dimension(:), intent(in)  :: x
 
1457
+      real, dimension(:), allocatable :: tmp
 
1458
+      allocate(f_workaround(2),tmp(2))
 
1459
+      tmp = matmul(b,x)
 
1460
+      f_workaround = tmp
 
1461
+   end function f_workaround
 
1462
+
 
1463
+end module a
 
1464
+
 
1465
+program main
 
1466
+   use a
 
1467
+   implicit none
 
1468
+   real, dimension(2) :: x = 1.0, y
 
1469
+   y = f_workaround (x)
 
1470
+   if (any (f_segfault (x) .ne. y)) call abort
 
1471
+   if (any (f_segfault_plus (x) .ne. y)) call abort
 
1472
+end program main
 
1473
Index: gcc/testsuite/gcc.c-torture/execute/pr61306-1.c
 
1474
===================================================================
 
1475
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr61306-1.c       (.../tags/gcc_4_8_3_release)
 
1476
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr61306-1.c       (.../branches/gcc-4_8-branch)
 
1477
@@ -0,0 +1,39 @@
 
1478
+#ifdef __INT32_TYPE__
 
1479
+typedef __INT32_TYPE__ int32_t;
 
1480
+#else
 
1481
+typedef int int32_t;
 
1482
+#endif
 
1483
+
 
1484
+#ifdef __UINT32_TYPE__
 
1485
+typedef __UINT32_TYPE__ uint32_t;
 
1486
+#else
 
1487
+typedef unsigned uint32_t;
 
1488
+#endif
 
1489
+
 
1490
+#define __fake_const_swab32(x) ((uint32_t)(                  \
 
1491
+       (((uint32_t)(x) & (uint32_t)0x000000ffUL) << 24) |    \
 
1492
+       (((uint32_t)(x) & (uint32_t)0x0000ff00UL) <<  8) |    \
 
1493
+       (((uint32_t)(x) & (uint32_t)0x00ff0000UL) >>  8) |    \
 
1494
+       (( (int32_t)(x) &  (int32_t)0xff000000UL) >> 24)))
 
1495
+
 
1496
+/* Previous version of bswap optimization failed to consider sign extension
 
1497
+   and as a result would replace an expression *not* doing a bswap by a
 
1498
+   bswap.  */
 
1499
+
 
1500
+__attribute__ ((noinline, noclone)) uint32_t
 
1501
+fake_bswap32 (uint32_t in)
 
1502
+{
 
1503
+  return __fake_const_swab32 (in);
 
1504
+}
 
1505
+
 
1506
+int
 
1507
+main(void)
 
1508
+{
 
1509
+  if (sizeof (int32_t) * __CHAR_BIT__ != 32)
 
1510
+    return 0;
 
1511
+  if (sizeof (uint32_t) * __CHAR_BIT__ != 32)
 
1512
+    return 0;
 
1513
+  if (fake_bswap32 (0x87654321) != 0xffffff87)
 
1514
+    __builtin_abort ();
 
1515
+  return 0;
 
1516
+}
 
1517
Index: gcc/testsuite/gcc.c-torture/execute/pr23135.x
 
1518
===================================================================
 
1519
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr23135.x (.../tags/gcc_4_8_3_release)
 
1520
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr23135.x (.../branches/gcc-4_8-branch)
 
1521
@@ -0,0 +1,2 @@
 
1522
+set additional_flags "-Wno-psabi"
 
1523
+return 0
 
1524
Index: gcc/testsuite/gcc.c-torture/execute/pr61306-3.c
 
1525
===================================================================
 
1526
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr61306-3.c       (.../tags/gcc_4_8_3_release)
 
1527
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr61306-3.c       (.../branches/gcc-4_8-branch)
 
1528
@@ -0,0 +1,13 @@
 
1529
+short a = -1;
 
1530
+int b;
 
1531
+char c;
 
1532
+
 
1533
+int
 
1534
+main ()
 
1535
+{
 
1536
+  c = a;
 
1537
+  b = a | c;
 
1538
+  if (b != -1)
 
1539
+    __builtin_abort ();
 
1540
+  return 0;
 
1541
+}
 
1542
Index: gcc/testsuite/gcc.c-torture/execute/20050604-1.x
 
1543
===================================================================
 
1544
--- a/src/gcc/testsuite/gcc.c-torture/execute/20050604-1.x      (.../tags/gcc_4_8_3_release)
 
1545
+++ b/src/gcc/testsuite/gcc.c-torture/execute/20050604-1.x      (.../branches/gcc-4_8-branch)
 
1546
@@ -6,4 +6,5 @@
 
1547
        set additional_flags "-mno-mmx"
 
1548
 }
 
1549
 
 
1550
+set additional_flags "-Wno-psabi"
 
1551
 return 0
 
1552
Index: gcc/testsuite/gcc.c-torture/execute/pr61306-2.c
 
1553
===================================================================
 
1554
--- a/src/gcc/testsuite/gcc.c-torture/execute/pr61306-2.c       (.../tags/gcc_4_8_3_release)
 
1555
+++ b/src/gcc/testsuite/gcc.c-torture/execute/pr61306-2.c       (.../branches/gcc-4_8-branch)
 
1556
@@ -0,0 +1,40 @@
 
1557
+#ifdef __INT16_TYPE__
 
1558
+typedef __INT16_TYPE__ int16_t;
 
1559
+#else
 
1560
+typedef short int16_t;
 
1561
+#endif
 
1562
+
 
1563
+#ifdef __UINT32_TYPE__
 
1564
+typedef __UINT32_TYPE__ uint32_t;
 
1565
+#else
 
1566
+typedef unsigned uint32_t;
 
1567
+#endif
 
1568
+
 
1569
+#define __fake_const_swab32(x) ((uint32_t)(                          \
 
1570
+       (((uint32_t)         (x) & (uint32_t)0x000000ffUL) << 24) |   \
 
1571
+       (((uint32_t)(int16_t)(x) & (uint32_t)0x00ffff00UL) <<  8) |   \
 
1572
+       (((uint32_t)         (x) & (uint32_t)0x00ff0000UL) >>  8) |   \
 
1573
+       (((uint32_t)         (x) & (uint32_t)0xff000000UL) >> 24)))
 
1574
+
 
1575
+
 
1576
+/* Previous version of bswap optimization failed to consider sign extension
 
1577
+   and as a result would replace an expression *not* doing a bswap by a
 
1578
+   bswap.  */
 
1579
+
 
1580
+__attribute__ ((noinline, noclone)) uint32_t
 
1581
+fake_bswap32 (uint32_t in)
 
1582
+{
 
1583
+  return __fake_const_swab32 (in);
 
1584
+}
 
1585
+
 
1586
+int
 
1587
+main(void)
 
1588
+{
 
1589
+  if (sizeof (uint32_t) * __CHAR_BIT__ != 32)
 
1590
+    return 0;
 
1591
+  if (sizeof (int16_t) * __CHAR_BIT__ != 16)
 
1592
+    return 0;
 
1593
+  if (fake_bswap32 (0x81828384) != 0xff838281)
 
1594
+    __builtin_abort ();
 
1595
+  return 0;
 
1596
+}
 
1597
Index: gcc/testsuite/gcc.c-torture/execute/20050316-1.x
 
1598
===================================================================
 
1599
--- a/src/gcc/testsuite/gcc.c-torture/execute/20050316-1.x      (.../tags/gcc_4_8_3_release)
 
1600
+++ b/src/gcc/testsuite/gcc.c-torture/execute/20050316-1.x      (.../branches/gcc-4_8-branch)
 
1601
@@ -4,4 +4,5 @@
 
1602
        return 1
 
1603
 }
 
1604
 
 
1605
+set additional_flags "-Wno-psabi"
 
1606
 return 0;
 
1607
Index: gcc/testsuite/gcc.c-torture/execute/20050316-3.x
 
1608
===================================================================
 
1609
--- a/src/gcc/testsuite/gcc.c-torture/execute/20050316-3.x      (.../tags/gcc_4_8_3_release)
 
1610
+++ b/src/gcc/testsuite/gcc.c-torture/execute/20050316-3.x      (.../branches/gcc-4_8-branch)
 
1611
@@ -0,0 +1,2 @@
 
1612
+set additional_flags "-Wno-psabi"
 
1613
+return 0
 
1614
Index: gcc/testsuite/gcc.c-torture/compile/pr61684.c
 
1615
===================================================================
 
1616
--- a/src/gcc/testsuite/gcc.c-torture/compile/pr61684.c (.../tags/gcc_4_8_3_release)
 
1617
+++ b/src/gcc/testsuite/gcc.c-torture/compile/pr61684.c (.../branches/gcc-4_8-branch)
 
1618
@@ -0,0 +1,15 @@
 
1619
+/* PR tree-optimization/61684 */
 
1620
+
 
1621
+int a, c;
 
1622
+static int *b = 0;
 
1623
+short d;
 
1624
+static short **e = 0;
 
1625
+
 
1626
+void
 
1627
+foo ()
 
1628
+{
 
1629
+  for (; c < 1; c++)
 
1630
+    ;
 
1631
+  *e = &d;
 
1632
+  a = d && (c && 1) & *b;
 
1633
+}
 
1634
Index: gcc/testsuite/gnat.dg/opt39.adb
 
1635
===================================================================
 
1636
--- a/src/gcc/testsuite/gnat.dg/opt39.adb       (.../tags/gcc_4_8_3_release)
 
1637
+++ b/src/gcc/testsuite/gnat.dg/opt39.adb       (.../branches/gcc-4_8-branch)
 
1638
@@ -0,0 +1,31 @@
 
1639
+-- { dg-do compile }
 
1640
+-- { dg-options "-O2 -fno-inline -fdump-tree-optimized" }
 
1641
+
 
1642
+procedure Opt39 (I : Integer) is
 
1643
+
 
1644
+  type Rec is record
 
1645
+    I1 : Integer;
 
1646
+    I2 : Integer;
 
1647
+    I3 : Integer;
 
1648
+    I4 : Integer;
 
1649
+    I5 : Integer;
 
1650
+  end record;
 
1651
+
 
1652
+  procedure Set (A : access Rec; I : Integer) is
 
1653
+    Tmp : Rec := A.all;
 
1654
+  begin
 
1655
+    Tmp.I1 := I;
 
1656
+    A.all := Tmp;
 
1657
+  end;
 
1658
+
 
1659
+  R : aliased Rec;
 
1660
+
 
1661
+begin
 
1662
+  Set (R'Access, I);
 
1663
+  if R.I1 /= I then
 
1664
+    raise Program_Error;
 
1665
+  end if;
 
1666
+end;
 
1667
+
 
1668
+-- { dg-final { scan-tree-dump-times "MEM" 1 "optimized" } }
 
1669
+-- { dg-final { cleanup-tree-dump "optimized" } }
 
1670
Index: gcc/testsuite/gnat.dg/overflow_fixed.adb
 
1671
===================================================================
 
1672
--- a/src/gcc/testsuite/gnat.dg/overflow_fixed.adb      (.../tags/gcc_4_8_3_release)
 
1673
+++ b/src/gcc/testsuite/gnat.dg/overflow_fixed.adb      (.../branches/gcc-4_8-branch)
 
1674
@@ -0,0 +1,19 @@
 
1675
+-- { dg-do run }
 
1676
+-- { dg-options "-gnato -O" }
 
1677
+
 
1678
+procedure Overflow_Fixed is
 
1679
+
 
1680
+  type Unsigned_8_Bit is mod 2**8;
 
1681
+
 
1682
+  procedure Fixed_To_Eight (Value : Duration) is
 
1683
+    Item : Unsigned_8_Bit;
 
1684
+  begin
 
1685
+    Item := Unsigned_8_Bit(Value);
 
1686
+    raise Program_Error;
 
1687
+  exception
 
1688
+    when Constraint_Error => null; -- expected case
 
1689
+  end;
 
1690
+
 
1691
+begin
 
1692
+  Fixed_To_Eight (-0.5);
 
1693
+end;
 
1694
Index: gcc/testsuite/gnat.dg/aliasing1.adb
 
1695
===================================================================
 
1696
--- a/src/gcc/testsuite/gnat.dg/aliasing1.adb   (.../tags/gcc_4_8_3_release)
 
1697
+++ b/src/gcc/testsuite/gnat.dg/aliasing1.adb   (.../branches/gcc-4_8-branch)
 
1698
@@ -18,5 +18,5 @@
 
1699
 
 
1700
 end Aliasing1;
 
1701
 
 
1702
--- { dg-final { scan-tree-dump-not "__gnat_rcheck" "optimized" } }
 
1703
+-- { dg-final { scan-tree-dump-not "gnat_rcheck" "optimized" } }
 
1704
 -- { dg-final { cleanup-tree-dump "optimized" } }
 
1705
Index: gcc/testsuite/gcc.dg/pr60866.c
 
1706
===================================================================
 
1707
--- a/src/gcc/testsuite/gcc.dg/pr60866.c        (.../tags/gcc_4_8_3_release)
 
1708
+++ b/src/gcc/testsuite/gcc.dg/pr60866.c        (.../branches/gcc-4_8-branch)
 
1709
@@ -0,0 +1,18 @@
 
1710
+/* { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } */
 
1711
+/* { dg-options "-O -fselective-scheduling -fno-if-conversion -fschedule-insns"  } */
 
1712
+
 
1713
+int n;
 
1714
+
 
1715
+void
 
1716
+foo (int w, int **dnroot, int **dn)
 
1717
+{
 
1718
+  int *child;
 
1719
+  int *xchild = xchild;
 
1720
+  for (; w < n; w++)
 
1721
+    if (!dnroot)
 
1722
+      {
 
1723
+       dnroot = dn;
 
1724
+       for (child = *dn; child; child = xchild)
 
1725
+         ;
 
1726
+      }
 
1727
+}
 
1728
Index: gcc/testsuite/gcc.dg/torture/pr61383-1.c
 
1729
===================================================================
 
1730
--- a/src/gcc/testsuite/gcc.dg/torture/pr61383-1.c      (.../tags/gcc_4_8_3_release)
 
1731
+++ b/src/gcc/testsuite/gcc.dg/torture/pr61383-1.c      (.../branches/gcc-4_8-branch)
 
1732
@@ -0,0 +1,35 @@
 
1733
+/* { dg-do run } */
 
1734
+
 
1735
+int a, b = 1, c, d, e, f, g;
 
1736
+
 
1737
+int
 
1738
+fn1 ()
 
1739
+{
 
1740
+  int h;
 
1741
+  for (;;)
 
1742
+    {
 
1743
+      g = b;
 
1744
+      g = g ? 0 : 1 % g;
 
1745
+      e = a + 1;
 
1746
+      for (; d < 1; d = e)
 
1747
+       {
 
1748
+         if (f == 0)
 
1749
+           h = 0;
 
1750
+         else
 
1751
+           h = 1 % f;
 
1752
+         if (f < 1)
 
1753
+           c = 0;
 
1754
+         else if (h)
 
1755
+           break;
 
1756
+       }
 
1757
+      if (b)
 
1758
+       return 0;
 
1759
+    }
 
1760
+}
 
1761
+
 
1762
+int
 
1763
+main ()
 
1764
+{
 
1765
+  fn1 ();
 
1766
+  return 0;
 
1767
+}
 
1768
Index: gcc/testsuite/gcc.dg/stack-usage-2.c
 
1769
===================================================================
 
1770
--- a/src/gcc/testsuite/gcc.dg/stack-usage-2.c  (.../tags/gcc_4_8_3_release)
 
1771
+++ b/src/gcc/testsuite/gcc.dg/stack-usage-2.c  (.../branches/gcc-4_8-branch)
 
1772
@@ -1,21 +1,21 @@
 
1773
 /* { dg-do compile } */
 
1774
 /* { dg-options "-Wstack-usage=512" } */
 
1775
 
 
1776
-int foo1 (void)
 
1777
+int foo1 (void)  /* { dg-bogus "stack usage" } */
 
1778
 {
 
1779
   char arr[16];
 
1780
   arr[0] = 1;
 
1781
   return 0;
 
1782
-} /* { dg-bogus "stack usage" } */
 
1783
+}
 
1784
 
 
1785
-int foo2 (void)
 
1786
+int foo2 (void)  /* { dg-warning "stack usage is \[0-9\]* bytes" } */
 
1787
 {
 
1788
   char arr[1024];
 
1789
   arr[0] = 1;
 
1790
   return 0;
 
1791
-} /* { dg-warning "stack usage is \[0-9\]* bytes" } */
 
1792
+}
 
1793
 
 
1794
-int foo3 (void)
 
1795
+int foo3 (void) /* { dg-warning "stack usage might be \[0-9\]* bytes" } */
 
1796
 {
 
1797
   char arr[1024] __attribute__((aligned (512)));
 
1798
   arr[0] = 1;
 
1799
@@ -22,12 +22,11 @@
 
1800
   /* Force dynamic realignment of argument pointer.  */
 
1801
   __builtin_apply ((void (*)()) foo2, 0, 0);
 
1802
   return 0;
 
1803
+}
 
1804
 
 
1805
-} /* { dg-warning "stack usage might be \[0-9\]* bytes" } */
 
1806
-
 
1807
-int foo4 (int n)
 
1808
+int foo4 (int n) /* { dg-warning "stack usage might be unbounded" } */
 
1809
 {
 
1810
   char arr[n];
 
1811
   arr[0] = 1;
 
1812
   return 0;
 
1813
-} /* { dg-warning "stack usage might be unbounded" } */
 
1814
+}
 
1815
Index: gcc/testsuite/ChangeLog
 
1816
===================================================================
 
1817
--- a/src/gcc/testsuite/ChangeLog       (.../tags/gcc_4_8_3_release)
 
1818
+++ b/src/gcc/testsuite/ChangeLog       (.../branches/gcc-4_8-branch)
 
1819
@@ -1,3 +1,190 @@
 
1820
+2014-07-28  Richard Biener  <rguenther@suse.de>
 
1821
+
 
1822
+       PR rtl-optimization/61801
 
1823
+       * gcc.target/i386/pr61801.c: Fix testcase.
 
1824
+
 
1825
+2014-07-28  Richard Biener  <rguenther@suse.de>
 
1826
+
 
1827
+       PR rtl-optimization/61801
 
1828
+       * gcc.target/i386/pr61801.c: New testcase.
 
1829
+
 
1830
+2014-07-24  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
1831
+
 
1832
+       Backport from mainline:
 
1833
+       2014-07-24  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
1834
+
 
1835
+       * gcc.target/powerpc/ppc64-abi-warn-3.c: New test.
 
1836
+
 
1837
+       * gcc.c-torture/execute/20050316-1.x: Add -Wno-psabi.
 
1838
+       * gcc.c-torture/execute/20050604-1.x: Add -Wno-psabi.
 
1839
+       * gcc.c-torture/execute/20050316-3.x: New file.  Add -Wno-psabi.
 
1840
+       * gcc.c-torture/execute/pr23135.x: Likewise.
 
1841
+
 
1842
+2014-07-24  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
1843
+
 
1844
+       Backport from mainline:
 
1845
+       2014-07-24  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
1846
+
 
1847
+       * gcc.target/powerpc/ppc64-abi-warn-2.c: New test.
 
1848
+
 
1849
+2014-07-24  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
1850
+
 
1851
+       Backport from mainline:
 
1852
+       2014-07-24  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
1853
+
 
1854
+       * gcc.target/powerpc/ppc64-abi-warn-1.c: New test.
 
1855
+
 
1856
+2014-07-24  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
1857
+
 
1858
+       Backport from mainline:
 
1859
+       2014-07-24  Ulrich Weigand  <Ulrich.Weigand@de.ibm.com>
 
1860
+
 
1861
+       * g++.dg/compat/struct-layout-1.exp: Load g++-dg.exp.
 
1862
+
 
1863
+2014-07-19  Eric Botcazou  <ebotcazou@adacore.com>
 
1864
+
 
1865
+       * gcc.dg/stack-usage-2.c: Adjust.
 
1866
+
 
1867
+2014-07-19  Paul Thomas  <pault@gcc.gnu.org>
 
1868
+
 
1869
+       Backport from trunk.
 
1870
+       PR fortran/61780
 
1871
+       * gfortran.dg/dependency_44.f90 : New test
 
1872
+
 
1873
+2014-07-10  Eric Botcazou  <ebotcazou@adacore.com>
 
1874
+
 
1875
+       * gnat.dg/opt39.adb: New test.
 
1876
+
 
1877
+2014-07-08  Paul Thomas  <pault@gcc.gnu.org>
 
1878
+
 
1879
+       PR fortran/61459
 
1880
+       PR fortran/58883
 
1881
+       * gfortran.dg/allocatable_function_8.f90 : New test
 
1882
+
 
1883
+2014-07-04  Jakub Jelinek  <jakub@redhat.com>
 
1884
+
 
1885
+       PR tree-optimization/61684
 
1886
+       * gcc.c-torture/compile/pr61684.c: New test.
 
1887
+
 
1888
+2014-07-02  Jakub Jelinek  <jakub@redhat.com>
 
1889
+           Fritz Reese  <Reese-Fritz@zai.com>
 
1890
+
 
1891
+       * gfortran.dg/oldstyle_5.f: New test.
 
1892
+
 
1893
+2014-06-30  Thomas Preud'homme  <thomas.preudhomme@arm.com>
 
1894
+
 
1895
+       Backport from mainline
 
1896
+       2014-06-11  Thomas Preud'homme  <thomas.preudhomme@arm.com>
 
1897
+
 
1898
+       PR tree-optimization/61306
 
1899
+       * gcc.c-torture/execute/pr61306-1.c: New test.
 
1900
+       * gcc.c-torture/execute/pr61306-2.c: Likewise.
 
1901
+       * gcc.c-torture/execute/pr61306-3.c: Likewise.
 
1902
+
 
1903
+2014-06-27  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
1904
+
 
1905
+       * gfortran.dg/nint_2.f90: Don't XFAIL for powerpc64le-*-linux*.
 
1906
+
 
1907
+2014-06-27  Uros Bizjak  <ubizjak@gmail.com>
 
1908
+
 
1909
+       Backport from mainline
 
1910
+       2014-06-26  Uros Bizjak  <ubizjak@gmail.com>
 
1911
+
 
1912
+       PR target/61586
 
1913
+       * gcc.target/alpha/pr61586.c: New test.
 
1914
+
 
1915
+2014-06-25  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
1916
+
 
1917
+       * gfortran.dg/default_format_denormal_2.f90:  Remove xfail for
 
1918
+       powerpc*-*-linux*.
 
1919
+
 
1920
+2014-06-18  Uros Bizjak  <ubizjak@gmail.com>
 
1921
+
 
1922
+       Backport from mainline
 
1923
+       2014-06-13  Ilya Enkovich  <ilya.enkovich@intel.com>
 
1924
+
 
1925
+       PR rtl-optimization/61094
 
1926
+       PR rtl-optimization/61446
 
1927
+       * gcc.target/i386/pr61446.c : New.
 
1928
+
 
1929
+       Backport from mainline
 
1930
+       2014-06-06  Uros Bizjak  <ubizjak@gmail.com>
 
1931
+
 
1932
+       PR target/61423
 
1933
+       * gcc.target/i386/pr61423.c: New test.
 
1934
+
 
1935
+2014-06-17  Yufeng Zhang  <yufeng.zhang@arm.com>
 
1936
+
 
1937
+       Backport from mainline
 
1938
+
 
1939
+       PR target/61483
 
1940
+       * gcc.target/aarch64/aapcs64/type-def.h (struct hfa_fx2_t): New type.
 
1941
+       * gcc.target/aarch64/aapcs64/va_arg-13.c: New test.
 
1942
+       * gcc.target/aarch64/aapcs64/va_arg-14.c: Ditto.
 
1943
+       * gcc.target/aarch64/aapcs64/va_arg-15.c: Ditto.
 
1944
+
 
1945
+2014-06-15  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
 
1946
+
 
1947
+       Backport from trunk.
 
1948
+       PR fortran/45187
 
1949
+       * gfortran.dg/cray_pointers_10.f90: New file.
 
1950
+
 
1951
+2014-06-13  Peter Bergner  <bergner@vnet.ibm.com>
 
1952
+
 
1953
+       Backport from mainline
 
1954
+
 
1955
+       2014-06-13  Peter Bergner  <bergner@vnet.ibm.com>
 
1956
+       PR target/61415
 
1957
+       * lib/target-supports.exp (check_effective_target_longdouble128): New.
 
1958
+       * gcc.target/powerpc/pack02.c: Use it.
 
1959
+       * gcc.target/powerpc/tfmode_off.c: Likewise.
 
1960
+
 
1961
+2014-06-12  Georg-Johann Lay  <avr@gjlay.de>
 
1962
+
 
1963
+       Backport from 2014-06-12 trunk r211491
 
1964
+
 
1965
+       PR target/61443
 
1966
+       * gcc.target/avr/torture/pr61443.c: New test.
 
1967
+
 
1968
+2014-06-04  Richard Biener  <rguenther@suse.de>
 
1969
+
 
1970
+       PR tree-optimization/61383
 
1971
+       * gcc.dg/torture/pr61383-1.c: New testcase.
 
1972
+
 
1973
+2014-06-03  Andrey Belevantsev  <abel@ispras.ru>
 
1974
+
 
1975
+       Backport from mainline
 
1976
+       2014-05-14  Andrey Belevantsev  <abel@ispras.ru>
 
1977
+
 
1978
+       PR rtl-optimization/60866
 
1979
+       * gcc.dg/pr60866.c: New test.
 
1980
+
 
1981
+2014-06-03  Andrey Belevantsev  <abel@ispras.ru>
 
1982
+
 
1983
+       Backport from mainline
 
1984
+       2014-05-14  Andrey Belevantsev  <abel@ispras.ru>
 
1985
+
 
1986
+       PR rtl-optimization/60901
 
1987
+       * gcc.target/i386/pr60901.c: New test.
 
1988
+
 
1989
+2014-05-28  Eric Botcazou  <ebotcazou@adacore.com>
 
1990
+
 
1991
+       Backport from mainline
 
1992
+       2014-05-27  Eric Botcazou  <ebotcazou@adacore.com>
 
1993
+
 
1994
+       * gnat.dg/overflow_fixed.adb: New test.
 
1995
+
 
1996
+2014-05-27  Eric Botcazou  <ebotcazou@adacore.com>
 
1997
+
 
1998
+       * gnat.dg/aliasing1.adb (dg-final): Robustify pattern matching.
 
1999
+
 
2000
+2014-05-22  Peter Bergner  <bergner@vnet.ibm.com>
 
2001
+
 
2002
+       Backport from mainline
 
2003
+       2014-05-22  Peter Bergner  <bergner@vnet.ibm.com>
 
2004
+
 
2005
+       * gcc.target/powerpc/htm-ttest.c: New test.
 
2006
+
 
2007
 2014-05-22  Release Manager
 
2008
 
 
2009
        * GCC 4.8.3 released.
 
2010
Index: gcc/testsuite/g++.dg/compat/struct-layout-1.exp
 
2011
===================================================================
 
2012
--- a/src/gcc/testsuite/g++.dg/compat/struct-layout-1.exp       (.../tags/gcc_4_8_3_release)
 
2013
+++ b/src/gcc/testsuite/g++.dg/compat/struct-layout-1.exp       (.../branches/gcc-4_8-branch)
 
2014
@@ -89,6 +89,9 @@
 
2015
 # This must be done after the compat-use-*-compiler definitions.
 
2016
 load_lib compat.exp
 
2017
 
 
2018
+# Provide the g++-dg-prune routine (gcc-dp.exp is loaded by compat.exp)
 
2019
+load_lib g++-dg.exp
 
2020
+
 
2021
 g++_init
 
2022
 
 
2023
 # Save variables for the C++ compiler under test, which each test will
 
2024
Index: gcc/testsuite/g++.dg/cpp0x/variadic158.C
 
2025
===================================================================
 
2026
--- a/src/gcc/testsuite/g++.dg/cpp0x/variadic158.C      (.../tags/gcc_4_8_3_release)
 
2027
+++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic158.C      (.../branches/gcc-4_8-branch)
 
2028
@@ -0,0 +1,24 @@
 
2029
+// PR c++/61134
 
2030
+// { dg-do compile { target c++11 } }
 
2031
+
 
2032
+struct Base { };
 
2033
+
 
2034
+template <typename>
 
2035
+struct Fixed {
 
2036
+  typedef const char* name;
 
2037
+};
 
2038
+
 
2039
+template <typename VT, typename... Fields>
 
2040
+void New(const char* name,
 
2041
+         typename Fixed<Fields>::name... field_names);
 
2042
+
 
2043
+template <typename VT, typename... Fields>
 
2044
+void CreateMetric(const char* name,
 
2045
+                  typename Fixed<Fields>::name... field_names,
 
2046
+                  const Base&) { }
 
2047
+
 
2048
+
 
2049
+void Fn()
 
2050
+{
 
2051
+  CreateMetric<int, const char*>("abcd", "def", Base());
 
2052
+}
 
2053
Index: gcc/testsuite/g++.dg/cpp0x/variadic160.C
 
2054
===================================================================
 
2055
--- a/src/gcc/testsuite/g++.dg/cpp0x/variadic160.C      (.../tags/gcc_4_8_3_release)
 
2056
+++ b/src/gcc/testsuite/g++.dg/cpp0x/variadic160.C      (.../branches/gcc-4_8-branch)
 
2057
@@ -0,0 +1,49 @@
 
2058
+// PR c++/61539
 
2059
+// { dg-do compile { target c++11 } }
 
2060
+
 
2061
+template <typename _CharT> class A;
 
2062
+template <typename> class B;
 
2063
+template <class charT> class C;
 
2064
+template <> class C<char>
 
2065
+{
 
2066
+  virtual void xparse (int &, const B<A<char> > &) const;
 
2067
+};
 
2068
+template <class T, class charT = char> class G : C<charT>
 
2069
+{
 
2070
+public:
 
2071
+  G (void *) {}
 
2072
+  void default_value (const T &);
 
2073
+  void xparse (int &, const B<A<charT> > &) const;
 
2074
+};
 
2075
+template <class T, class charT>
 
2076
+void validate (int &, const B<A<charT> > &, T *, int);
 
2077
+template <class T, class charT>
 
2078
+void G<T, charT>::xparse (int &p1, const B<A<charT> > &p2) const
 
2079
+{
 
2080
+  validate (p1, p2, (T *)0, 0);
 
2081
+}
 
2082
+template <class T> G<T> *value (T *) { return new G<T>(0); }
 
2083
+namespace Eigen
 
2084
+{
 
2085
+template <typename T> struct D;
 
2086
+template <typename, int, int, int = 0, int = 0, int = 0 > class F;
 
2087
+template <typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows,
 
2088
+          int _MaxCols>
 
2089
+struct D<F<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> >
 
2090
+{
 
2091
+  typedef _Scalar Scalar;
 
2092
+};
 
2093
+template <typename, int, int, int, int, int _MaxCols> class F
 
2094
+{
 
2095
+public:
 
2096
+  typedef typename Eigen::D<F>::Scalar Scalar;
 
2097
+  F (const Scalar &, const Scalar &, const Scalar &);
 
2098
+};
 
2099
+template <class... T>
 
2100
+void validate (int &, const B<A<char> > &, Eigen::F<T...> *);
 
2101
+}
 
2102
+int main (int, char *[])
 
2103
+{
 
2104
+  Eigen::F<double, 3, 1> a (0, 0, 0);
 
2105
+  value (&a)->default_value (Eigen::F<double, 3, 1>(0, 0, 0));
 
2106
+}
 
2107
Index: gcc/testsuite/g++.dg/template/local-fn1.C
 
2108
===================================================================
 
2109
--- a/src/gcc/testsuite/g++.dg/template/local-fn1.C     (.../tags/gcc_4_8_3_release)
 
2110
+++ b/src/gcc/testsuite/g++.dg/template/local-fn1.C     (.../branches/gcc-4_8-branch)
 
2111
@@ -0,0 +1,8 @@
 
2112
+// PR c++/60605
 
2113
+
 
2114
+template <typename T = int>
 
2115
+struct Foo {
 
2116
+    void bar() {
 
2117
+        void bug();
 
2118
+    }
 
2119
+};
 
2120
Index: gcc/testsuite/g++.dg/template/conv14.C
 
2121
===================================================================
 
2122
--- a/src/gcc/testsuite/g++.dg/template/conv14.C        (.../tags/gcc_4_8_3_release)
 
2123
+++ b/src/gcc/testsuite/g++.dg/template/conv14.C        (.../branches/gcc-4_8-branch)
 
2124
@@ -0,0 +1,30 @@
 
2125
+// PR c++/61647
 
2126
+
 
2127
+class XX;
 
2128
+
 
2129
+template<typename Container, typename Key>
 
2130
+struct Accessor;
 
2131
+
 
2132
+template<typename Container, typename Key, typename KeyStore = Key>
 
2133
+class Variant {
 
2134
+protected:
 
2135
+    KeyStore index;
 
2136
+    Container state;
 
2137
+public:
 
2138
+    Variant(Container st, const Key& i) : index(i), state(st) {}
 
2139
+
 
2140
+    template<typename T>
 
2141
+    operator T() const {
 
2142
+        return Accessor<Container, KeyStore>::template get<T>(state, index);
 
2143
+    }
 
2144
+};
 
2145
+
 
2146
+class AutoCleanVariant : public Variant<XX*, int> {
 
2147
+public:
 
2148
+    AutoCleanVariant(XX* st, int i) : Variant<XX*,int>(st,i) {}
 
2149
+
 
2150
+    template<typename T>
 
2151
+    operator T() const {
 
2152
+         return Variant<XX*, int>::operator T();
 
2153
+    }
 
2154
+};
 
2155
Index: gcc/testsuite/g++.dg/template/ptrmem27.C
 
2156
===================================================================
 
2157
--- a/src/gcc/testsuite/g++.dg/template/ptrmem27.C      (.../tags/gcc_4_8_3_release)
 
2158
+++ b/src/gcc/testsuite/g++.dg/template/ptrmem27.C      (.../branches/gcc-4_8-branch)
 
2159
@@ -0,0 +1,22 @@
 
2160
+// PR c++/61500
 
2161
+
 
2162
+struct X {
 
2163
+  int i;
 
2164
+  int j;
 
2165
+
 
2166
+  int foo(int X::* ptr);
 
2167
+
 
2168
+  template <int X::* ptr>
 
2169
+  int bar();
 
2170
+};
 
2171
+
 
2172
+int X::foo(int X::* ptr) {
 
2173
+  int* p = &(this->*ptr);  // OK.
 
2174
+  return *p;
 
2175
+}
 
2176
+
 
2177
+template <int X::* ptr>
 
2178
+int X::bar() {
 
2179
+  int* p = &(this->*ptr);  // gcc 4.9.0: OK in C++98 mode, fails in C++11 mode.
 
2180
+  return *p;
 
2181
+}
 
2182
Index: gcc/cp/tree.c
 
2183
===================================================================
 
2184
--- a/src/gcc/cp/tree.c (.../tags/gcc_4_8_3_release)
 
2185
+++ b/src/gcc/cp/tree.c (.../branches/gcc-4_8-branch)
 
2186
@@ -97,6 +97,16 @@
 
2187
     case IMAGPART_EXPR:
 
2188
       return lvalue_kind (TREE_OPERAND (ref, 0));
 
2189
 
 
2190
+    case MEMBER_REF:
 
2191
+    case DOTSTAR_EXPR:
 
2192
+      if (TREE_CODE (ref) == MEMBER_REF)
 
2193
+       op1_lvalue_kind = clk_ordinary;
 
2194
+      else
 
2195
+       op1_lvalue_kind = lvalue_kind (TREE_OPERAND (ref, 0));
 
2196
+      if (TYPE_PTRMEMFUNC_P (TREE_TYPE (TREE_OPERAND (ref, 1))))
 
2197
+       op1_lvalue_kind = clk_none;
 
2198
+      return op1_lvalue_kind;
 
2199
+
 
2200
     case COMPONENT_REF:
 
2201
       op1_lvalue_kind = lvalue_kind (TREE_OPERAND (ref, 0));
 
2202
       /* Look at the member designator.  */
 
2203
Index: gcc/cp/ChangeLog
 
2204
===================================================================
 
2205
--- a/src/gcc/cp/ChangeLog      (.../tags/gcc_4_8_3_release)
 
2206
+++ b/src/gcc/cp/ChangeLog      (.../branches/gcc-4_8-branch)
 
2207
@@ -1,3 +1,25 @@
 
2208
+2014-06-30  Jason Merrill  <jason@redhat.com>
 
2209
+
 
2210
+       PR c++/61647
 
2211
+       * pt.c (type_dependent_expression_p): Check BASELINK_OPTYPE.
 
2212
+
 
2213
+       PR c++/61539
 
2214
+       * pt.c (unify_one_argument): Type/expression mismatch just causes
 
2215
+       deduction failure.
 
2216
+
 
2217
+       PR c++/61500
 
2218
+       * tree.c (lvalue_kind): Handle MEMBER_REF and DOTSTAR_EXPR.
 
2219
+
 
2220
+2014-06-17  Jason Merrill  <jason@redhat.com>
 
2221
+
 
2222
+       PR c++/60605
 
2223
+       * pt.c (check_default_tmpl_args): Check DECL_LOCAL_FUNCTION_P.
 
2224
+
 
2225
+2014-06-02  Jason Merrill  <jason@redhat.com>
 
2226
+
 
2227
+       PR c++/61134
 
2228
+       * pt.c (pack_deducible_p): Handle canonicalization.
 
2229
+
 
2230
 2014-05-22  Release Manager
 
2231
 
 
2232
        * GCC 4.8.3 released.
 
2233
Index: gcc/cp/pt.c
 
2234
===================================================================
 
2235
--- a/src/gcc/cp/pt.c   (.../tags/gcc_4_8_3_release)
 
2236
+++ b/src/gcc/cp/pt.c   (.../branches/gcc-4_8-branch)
 
2237
@@ -4308,7 +4308,8 @@
 
2238
      in the template-parameter-list of the definition of a member of a
 
2239
      class template.  */
 
2240
 
 
2241
-  if (TREE_CODE (CP_DECL_CONTEXT (decl)) == FUNCTION_DECL)
 
2242
+  if (TREE_CODE (CP_DECL_CONTEXT (decl)) == FUNCTION_DECL
 
2243
+      || (TREE_CODE (decl) == FUNCTION_DECL && DECL_LOCAL_FUNCTION_P (decl)))
 
2244
     /* You can't have a function template declaration in a local
 
2245
        scope, nor you can you define a member of a class template in a
 
2246
        local scope.  */
 
2247
@@ -14934,7 +14935,7 @@
 
2248
        continue;
 
2249
       for (packs = PACK_EXPANSION_PARAMETER_PACKS (type);
 
2250
           packs; packs = TREE_CHAIN (packs))
 
2251
-       if (TREE_VALUE (packs) == parm)
 
2252
+       if (template_args_equal (TREE_VALUE (packs), parm))
 
2253
          {
 
2254
            /* The template parameter pack is used in a function parameter
 
2255
               pack.  If this is the end of the parameter list, the
 
2256
@@ -15502,8 +15503,9 @@
 
2257
        maybe_adjust_types_for_deduction (strict, &parm, &arg, arg_expr);
 
2258
     }
 
2259
   else
 
2260
-    gcc_assert ((TYPE_P (parm) || TREE_CODE (parm) == TEMPLATE_DECL)
 
2261
-               == (TYPE_P (arg) || TREE_CODE (arg) == TEMPLATE_DECL));
 
2262
+    if ((TYPE_P (parm) || TREE_CODE (parm) == TEMPLATE_DECL)
 
2263
+       != (TYPE_P (arg) || TREE_CODE (arg) == TEMPLATE_DECL))
 
2264
+      return unify_template_argument_mismatch (explain_p, parm, arg);
 
2265
 
 
2266
   /* For deduction from an init-list we need the actual list.  */
 
2267
   if (arg_expr && BRACE_ENCLOSED_INITIALIZER_P (arg_expr))
 
2268
@@ -20009,7 +20011,12 @@
 
2269
        return true;
 
2270
 
 
2271
       if (BASELINK_P (expression))
 
2272
-       expression = BASELINK_FUNCTIONS (expression);
 
2273
+       {
 
2274
+         if (BASELINK_OPTYPE (expression)
 
2275
+             && dependent_type_p (BASELINK_OPTYPE (expression)))
 
2276
+           return true;
 
2277
+         expression = BASELINK_FUNCTIONS (expression);
 
2278
+       }
 
2279
 
 
2280
       if (TREE_CODE (expression) == TEMPLATE_ID_EXPR)
 
2281
        {
 
2282
Index: gcc/double-int.c
 
2283
===================================================================
 
2284
--- a/src/gcc/double-int.c      (.../tags/gcc_4_8_3_release)
 
2285
+++ b/src/gcc/double-int.c      (.../branches/gcc-4_8-branch)
 
2286
@@ -616,7 +616,7 @@
 
2287
                 == (unsigned HOST_WIDE_INT) htwice)
 
2288
                && (labs_den <= ltwice)))
 
2289
          {
 
2290
-           if (*hquo < 0)
 
2291
+           if (quo_neg)
 
2292
              /* quo = quo - 1;  */
 
2293
              add_double (*lquo, *hquo,
 
2294
                          (HOST_WIDE_INT) -1, (HOST_WIDE_INT) -1, lquo, hquo);
 
2295
Index: gcc/tree-ssa-math-opts.c
 
2296
===================================================================
 
2297
--- a/src/gcc/tree-ssa-math-opts.c      (.../tags/gcc_4_8_3_release)
 
2298
+++ b/src/gcc/tree-ssa-math-opts.c      (.../branches/gcc-4_8-branch)
 
2299
@@ -1537,7 +1537,7 @@
 
2300
 
 
2301
 struct symbolic_number {
 
2302
   unsigned HOST_WIDEST_INT n;
 
2303
-  int size;
 
2304
+  tree type;
 
2305
 };
 
2306
 
 
2307
 /* Perform a SHIFT or ROTATE operation by COUNT bits on symbolic
 
2308
@@ -1549,13 +1549,15 @@
 
2309
                 struct symbolic_number *n,
 
2310
                 int count)
 
2311
 {
 
2312
+  int bitsize = TYPE_PRECISION (n->type);
 
2313
+
 
2314
   if (count % 8 != 0)
 
2315
     return false;
 
2316
 
 
2317
   /* Zero out the extra bits of N in order to avoid them being shifted
 
2318
      into the significant bits.  */
 
2319
-  if (n->size < (int)sizeof (HOST_WIDEST_INT))
 
2320
-    n->n &= ((unsigned HOST_WIDEST_INT)1 << (n->size * BITS_PER_UNIT)) - 1;
 
2321
+  if (bitsize < 8 * (int)sizeof (HOST_WIDEST_INT))
 
2322
+    n->n &= ((unsigned HOST_WIDEST_INT)1 << bitsize) - 1;
 
2323
 
 
2324
   switch (code)
 
2325
     {
 
2326
@@ -1563,20 +1565,24 @@
 
2327
       n->n <<= count;
 
2328
       break;
 
2329
     case RSHIFT_EXPR:
 
2330
+      /* Arithmetic shift of signed type: result is dependent on the value.  */
 
2331
+      if (!TYPE_UNSIGNED (n->type)
 
2332
+         && (n->n & ((unsigned HOST_WIDEST_INT) 0xff << (bitsize - 8))))
 
2333
+       return false;
 
2334
       n->n >>= count;
 
2335
       break;
 
2336
     case LROTATE_EXPR:
 
2337
-      n->n = (n->n << count) | (n->n >> ((n->size * BITS_PER_UNIT) - count));
 
2338
+      n->n = (n->n << count) | (n->n >> (bitsize - count));
 
2339
       break;
 
2340
     case RROTATE_EXPR:
 
2341
-      n->n = (n->n >> count) | (n->n << ((n->size * BITS_PER_UNIT) - count));
 
2342
+      n->n = (n->n >> count) | (n->n << (bitsize - count));
 
2343
       break;
 
2344
     default:
 
2345
       return false;
 
2346
     }
 
2347
   /* Zero unused bits for size.  */
 
2348
-  if (n->size < (int)sizeof (HOST_WIDEST_INT))
 
2349
-    n->n &= ((unsigned HOST_WIDEST_INT)1 << (n->size * BITS_PER_UNIT)) - 1;
 
2350
+  if (bitsize < 8 * (int)sizeof (HOST_WIDEST_INT))
 
2351
+    n->n &= ((unsigned HOST_WIDEST_INT)1 << bitsize) - 1;
 
2352
   return true;
 
2353
 }
 
2354
 
 
2355
@@ -1593,7 +1599,7 @@
 
2356
   if (TREE_CODE (lhs_type) != INTEGER_TYPE)
 
2357
     return false;
 
2358
 
 
2359
-  if (TYPE_PRECISION (lhs_type) != n->size * BITS_PER_UNIT)
 
2360
+  if (TYPE_PRECISION (lhs_type) != TYPE_PRECISION (n->type))
 
2361
     return false;
 
2362
 
 
2363
   return true;
 
2364
@@ -1650,20 +1656,23 @@
 
2365
         to initialize the symbolic number.  */
 
2366
       if (!source_expr1)
 
2367
        {
 
2368
+         int size;
 
2369
+
 
2370
          /* Set up the symbolic number N by setting each byte to a
 
2371
             value between 1 and the byte size of rhs1.  The highest
 
2372
             order byte is set to n->size and the lowest order
 
2373
             byte to 1.  */
 
2374
-         n->size = TYPE_PRECISION (TREE_TYPE (rhs1));
 
2375
-         if (n->size % BITS_PER_UNIT != 0)
 
2376
+         n->type = TREE_TYPE (rhs1);
 
2377
+         size = TYPE_PRECISION (n->type);
 
2378
+         if (size % BITS_PER_UNIT != 0)
 
2379
            return NULL_TREE;
 
2380
-         n->size /= BITS_PER_UNIT;
 
2381
+         size /= BITS_PER_UNIT;
 
2382
          n->n = (sizeof (HOST_WIDEST_INT) < 8 ? 0 :
 
2383
                  (unsigned HOST_WIDEST_INT)0x08070605 << 32 | 0x04030201);
 
2384
 
 
2385
-         if (n->size < (int)sizeof (HOST_WIDEST_INT))
 
2386
+         if (size < (int)sizeof (HOST_WIDEST_INT))
 
2387
            n->n &= ((unsigned HOST_WIDEST_INT)1 <<
 
2388
-                    (n->size * BITS_PER_UNIT)) - 1;
 
2389
+                    (size * BITS_PER_UNIT)) - 1;
 
2390
 
 
2391
          source_expr1 = rhs1;
 
2392
        }
 
2393
@@ -1672,12 +1681,12 @@
 
2394
        {
 
2395
        case BIT_AND_EXPR:
 
2396
          {
 
2397
-           int i;
 
2398
+           int i, size = TYPE_PRECISION (n->type) / BITS_PER_UNIT;
 
2399
            unsigned HOST_WIDEST_INT val = widest_int_cst_value (rhs2);
 
2400
            unsigned HOST_WIDEST_INT tmp = val;
 
2401
 
 
2402
            /* Only constants masking full bytes are allowed.  */
 
2403
-           for (i = 0; i < n->size; i++, tmp >>= BITS_PER_UNIT)
 
2404
+           for (i = 0; i < size; i++, tmp >>= BITS_PER_UNIT)
 
2405
              if ((tmp & 0xff) != 0 && (tmp & 0xff) != 0xff)
 
2406
                return NULL_TREE;
 
2407
 
 
2408
@@ -1693,12 +1702,22 @@
 
2409
          break;
 
2410
        CASE_CONVERT:
 
2411
          {
 
2412
-           int type_size;
 
2413
+           int type_size, old_type_size;
 
2414
+           tree type;
 
2415
 
 
2416
-           type_size = TYPE_PRECISION (gimple_expr_type (stmt));
 
2417
+           type = gimple_expr_type (stmt);
 
2418
+           type_size = TYPE_PRECISION (type);
 
2419
            if (type_size % BITS_PER_UNIT != 0)
 
2420
              return NULL_TREE;
 
2421
 
 
2422
+           /* Sign extension: result is dependent on the value.  */
 
2423
+           old_type_size = TYPE_PRECISION (n->type);
 
2424
+           if (!TYPE_UNSIGNED (n->type)
 
2425
+               && type_size > old_type_size
 
2426
+               && n->n &
 
2427
+                  ((unsigned HOST_WIDEST_INT) 0xff << (old_type_size - 8)))
 
2428
+             return NULL_TREE;
 
2429
+
 
2430
            if (type_size / BITS_PER_UNIT < (int)(sizeof (HOST_WIDEST_INT)))
 
2431
              {
 
2432
                /* If STMT casts to a smaller type mask out the bits not
 
2433
@@ -1705,7 +1724,7 @@
 
2434
                   belonging to the target type.  */
 
2435
                n->n &= ((unsigned HOST_WIDEST_INT)1 << type_size) - 1;
 
2436
              }
 
2437
-           n->size = type_size / BITS_PER_UNIT;
 
2438
+           n->type = type;
 
2439
          }
 
2440
          break;
 
2441
        default:
 
2442
@@ -1718,7 +1737,7 @@
 
2443
 
 
2444
   if (rhs_class == GIMPLE_BINARY_RHS)
 
2445
     {
 
2446
-      int i;
 
2447
+      int i, size;
 
2448
       struct symbolic_number n1, n2;
 
2449
       unsigned HOST_WIDEST_INT mask;
 
2450
       tree source_expr2;
 
2451
@@ -1742,11 +1761,12 @@
 
2452
          source_expr2 = find_bswap_1 (rhs2_stmt, &n2, limit - 1);
 
2453
 
 
2454
          if (source_expr1 != source_expr2
 
2455
-             || n1.size != n2.size)
 
2456
+             || TYPE_PRECISION (n1.type) != TYPE_PRECISION (n2.type))
 
2457
            return NULL_TREE;
 
2458
 
 
2459
-         n->size = n1.size;
 
2460
-         for (i = 0, mask = 0xff; i < n->size; i++, mask <<= BITS_PER_UNIT)
 
2461
+         n->type = n1.type;
 
2462
+         size = TYPE_PRECISION (n->type) / BITS_PER_UNIT;
 
2463
+         for (i = 0, mask = 0xff; i < size; i++, mask <<= BITS_PER_UNIT)
 
2464
            {
 
2465
              unsigned HOST_WIDEST_INT masked1, masked2;
 
2466
 
 
2467
@@ -1785,7 +1805,7 @@
 
2468
 
 
2469
   struct symbolic_number n;
 
2470
   tree source_expr;
 
2471
-  int limit;
 
2472
+  int limit, bitsize;
 
2473
 
 
2474
   /* The last parameter determines the depth search limit.  It usually
 
2475
      correlates directly to the number of bytes to be touched.  We
 
2476
@@ -1800,13 +1820,14 @@
 
2477
     return NULL_TREE;
 
2478
 
 
2479
   /* Zero out the extra bits of N and CMP.  */
 
2480
-  if (n.size < (int)sizeof (HOST_WIDEST_INT))
 
2481
+  bitsize = TYPE_PRECISION (n.type);
 
2482
+  if (bitsize < 8 * (int)sizeof (HOST_WIDEST_INT))
 
2483
     {
 
2484
       unsigned HOST_WIDEST_INT mask =
 
2485
-       ((unsigned HOST_WIDEST_INT)1 << (n.size * BITS_PER_UNIT)) - 1;
 
2486
+       ((unsigned HOST_WIDEST_INT)1 << bitsize) - 1;
 
2487
 
 
2488
       n.n &= mask;
 
2489
-      cmp >>= (sizeof (HOST_WIDEST_INT) - n.size) * BITS_PER_UNIT;
 
2490
+      cmp >>= sizeof (HOST_WIDEST_INT) * BITS_PER_UNIT - bitsize;
 
2491
     }
 
2492
 
 
2493
   /* A complete byte swap should make the symbolic number to start
 
2494
Index: gcc/tree-ssa-ifcombine.c
 
2495
===================================================================
 
2496
--- a/src/gcc/tree-ssa-ifcombine.c      (.../tags/gcc_4_8_3_release)
 
2497
+++ b/src/gcc/tree-ssa-ifcombine.c      (.../branches/gcc-4_8-branch)
 
2498
@@ -105,7 +105,11 @@
 
2499
     {
 
2500
       gimple stmt = gsi_stmt (gsi);
 
2501
 
 
2502
+      if (is_gimple_debug (stmt))
 
2503
+       continue;
 
2504
+
 
2505
       if (gimple_has_side_effects (stmt)
 
2506
+         || gimple_could_trap_p (stmt)
 
2507
          || gimple_vuse (stmt))
 
2508
        return false;
 
2509
     }
 
2510
@@ -197,7 +201,8 @@
 
2511
       while (is_gimple_assign (stmt)
 
2512
             && ((CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (stmt))
 
2513
                  && (TYPE_PRECISION (TREE_TYPE (gimple_assign_lhs (stmt)))
 
2514
-                     <= TYPE_PRECISION (TREE_TYPE (gimple_assign_rhs1 (stmt)))))
 
2515
+                     <= TYPE_PRECISION (TREE_TYPE (gimple_assign_rhs1 (stmt))))
 
2516
+                 && TREE_CODE (gimple_assign_rhs1 (stmt)) == SSA_NAME)
 
2517
                 || gimple_assign_ssa_name_copy_p (stmt)))
 
2518
        stmt = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (stmt));
 
2519
 
 
2520
Index: gcc/sel-sched-ir.c
 
2521
===================================================================
 
2522
--- a/src/gcc/sel-sched-ir.c    (.../tags/gcc_4_8_3_release)
 
2523
+++ b/src/gcc/sel-sched-ir.c    (.../branches/gcc-4_8-branch)
 
2524
@@ -162,7 +162,7 @@
 
2525
 static void free_av_set (basic_block);
 
2526
 static void invalidate_av_set (basic_block);
 
2527
 static void extend_insn_data (void);
 
2528
-static void sel_init_new_insn (insn_t, int);
 
2529
+static void sel_init_new_insn (insn_t, int, int = -1);
 
2530
 static void finish_insns (void);
 
2531
 
 
2532
 /* Various list functions.  */
 
2533
@@ -4011,9 +4011,10 @@
 
2534
   return seqno;
 
2535
 }
 
2536
 
 
2537
-/* Compute seqno for INSN by its preds or succs.  */
 
2538
+/* Compute seqno for INSN by its preds or succs.  Use OLD_SEQNO to compute
 
2539
+   seqno in corner cases.  */
 
2540
 static int
 
2541
-get_seqno_for_a_jump (insn_t insn)
 
2542
+get_seqno_for_a_jump (insn_t insn, int old_seqno)
 
2543
 {
 
2544
   int seqno;
 
2545
 
 
2546
@@ -4069,8 +4070,16 @@
 
2547
   if (seqno < 0)
 
2548
     seqno = get_seqno_by_succs (insn);
 
2549
 
 
2550
+  if (seqno < 0)
 
2551
+    {
 
2552
+      /* The only case where this could be here legally is that the only
 
2553
+        unscheduled insn was a conditional jump that got removed and turned
 
2554
+        into this unconditional one.  Initialize from the old seqno
 
2555
+        of that jump passed down to here.  */
 
2556
+      seqno = old_seqno;
 
2557
+    }
 
2558
+
 
2559
   gcc_assert (seqno >= 0);
 
2560
-
 
2561
   return seqno;
 
2562
 }
 
2563
 
 
2564
@@ -4250,22 +4259,24 @@
 
2565
 }
 
2566
 
 
2567
 /* This is used to initialize spurious jumps generated by
 
2568
-   sel_redirect_edge ().  */
 
2569
+   sel_redirect_edge ().  OLD_SEQNO is used for initializing seqnos
 
2570
+   in corner cases within get_seqno_for_a_jump.  */
 
2571
 static void
 
2572
-init_simplejump_data (insn_t insn)
 
2573
+init_simplejump_data (insn_t insn, int old_seqno)
 
2574
 {
 
2575
   init_expr (INSN_EXPR (insn), vinsn_create (insn, false), 0,
 
2576
             REG_BR_PROB_BASE, 0, 0, 0, 0, 0, 0,
 
2577
             vNULL, true, false, false,
 
2578
             false, true);
 
2579
-  INSN_SEQNO (insn) = get_seqno_for_a_jump (insn);
 
2580
+  INSN_SEQNO (insn) = get_seqno_for_a_jump (insn, old_seqno);
 
2581
   init_first_time_insn_data (insn);
 
2582
 }
 
2583
 
 
2584
 /* Perform deferred initialization of insns.  This is used to process
 
2585
-   a new jump that may be created by redirect_edge.  */
 
2586
-void
 
2587
-sel_init_new_insn (insn_t insn, int flags)
 
2588
+   a new jump that may be created by redirect_edge.  OLD_SEQNO is used
 
2589
+   for initializing simplejumps in init_simplejump_data.  */
 
2590
+static void
 
2591
+sel_init_new_insn (insn_t insn, int flags, int old_seqno)
 
2592
 {
 
2593
   /* We create data structures for bb when the first insn is emitted in it.  */
 
2594
   if (INSN_P (insn)
 
2595
@@ -4292,7 +4303,7 @@
 
2596
   if (flags & INSN_INIT_TODO_SIMPLEJUMP)
 
2597
     {
 
2598
       extend_insn_data ();
 
2599
-      init_simplejump_data (insn);
 
2600
+      init_simplejump_data (insn, old_seqno);
 
2601
     }
 
2602
 
 
2603
   gcc_assert (CONTAINING_RGN (BLOCK_NUM (insn))
 
2604
@@ -5578,8 +5589,7 @@
 
2605
 }
 
2606
 
 
2607
 /* A wrapper for redirect_edge_and_branch_force, which also initializes
 
2608
-   data structures for possibly created bb and insns.  Returns the newly
 
2609
-   added bb or NULL, when a bb was not needed.  */
 
2610
+   data structures for possibly created bb and insns.  */
 
2611
 void
 
2612
 sel_redirect_edge_and_branch_force (edge e, basic_block to)
 
2613
 {
 
2614
@@ -5586,6 +5596,7 @@
 
2615
   basic_block jump_bb, src, orig_dest = e->dest;
 
2616
   int prev_max_uid;
 
2617
   rtx jump;
 
2618
+  int old_seqno = -1;
 
2619
 
 
2620
   /* This function is now used only for bookkeeping code creation, where
 
2621
      we'll never get the single pred of orig_dest block and thus will not
 
2622
@@ -5594,8 +5605,13 @@
 
2623
               && !single_pred_p (orig_dest));
 
2624
   src = e->src;
 
2625
   prev_max_uid = get_max_uid ();
 
2626
+  /* Compute and pass old_seqno down to sel_init_new_insn only for the case
 
2627
+     when the conditional jump being redirected may become unconditional.  */
 
2628
+  if (any_condjump_p (BB_END (src))
 
2629
+      && INSN_SEQNO (BB_END (src)) >= 0)
 
2630
+    old_seqno = INSN_SEQNO (BB_END (src));
 
2631
+
 
2632
   jump_bb = redirect_edge_and_branch_force (e, to);
 
2633
-
 
2634
   if (jump_bb != NULL)
 
2635
     sel_add_bb (jump_bb);
 
2636
 
 
2637
@@ -5607,7 +5623,8 @@
 
2638
 
 
2639
   jump = find_new_jump (src, jump_bb, prev_max_uid);
 
2640
   if (jump)
 
2641
-    sel_init_new_insn (jump, INSN_INIT_TODO_LUID | INSN_INIT_TODO_SIMPLEJUMP);
 
2642
+    sel_init_new_insn (jump, INSN_INIT_TODO_LUID | INSN_INIT_TODO_SIMPLEJUMP,
 
2643
+                      old_seqno);
 
2644
   set_immediate_dominator (CDI_DOMINATORS, to,
 
2645
                           recompute_dominator (CDI_DOMINATORS, to));
 
2646
   set_immediate_dominator (CDI_DOMINATORS, orig_dest,
 
2647
@@ -5626,6 +5643,7 @@
 
2648
   edge redirected;
 
2649
   bool recompute_toporder_p = false;
 
2650
   bool maybe_unreachable = single_pred_p (orig_dest);
 
2651
+  int old_seqno = -1;
 
2652
 
 
2653
   latch_edge_p = (pipelining_p
 
2654
                   && current_loop_nest
 
2655
@@ -5634,6 +5652,12 @@
 
2656
   src = e->src;
 
2657
   prev_max_uid = get_max_uid ();
 
2658
 
 
2659
+  /* Compute and pass old_seqno down to sel_init_new_insn only for the case
 
2660
+     when the conditional jump being redirected may become unconditional.  */
 
2661
+  if (any_condjump_p (BB_END (src))
 
2662
+      && INSN_SEQNO (BB_END (src)) >= 0)
 
2663
+    old_seqno = INSN_SEQNO (BB_END (src));
 
2664
+
 
2665
   redirected = redirect_edge_and_branch (e, to);
 
2666
 
 
2667
   gcc_assert (redirected && !last_added_blocks.exists ());
 
2668
@@ -5654,7 +5678,7 @@
 
2669
 
 
2670
   jump = find_new_jump (src, NULL, prev_max_uid);
 
2671
   if (jump)
 
2672
-    sel_init_new_insn (jump, INSN_INIT_TODO_LUID | INSN_INIT_TODO_SIMPLEJUMP);
 
2673
+    sel_init_new_insn (jump, INSN_INIT_TODO_LUID | INSN_INIT_TODO_SIMPLEJUMP, old_seqno);
 
2674
 
 
2675
   /* Only update dominator info when we don't have unreachable blocks.
 
2676
      Otherwise we'll update in maybe_tidy_empty_bb.  */
 
2677
Index: gcc/fortran/trans-expr.c
 
2678
===================================================================
 
2679
--- a/src/gcc/fortran/trans-expr.c      (.../tags/gcc_4_8_3_release)
 
2680
+++ b/src/gcc/fortran/trans-expr.c      (.../branches/gcc-4_8-branch)
 
2681
@@ -7096,7 +7096,7 @@
 
2682
 
 
2683
   res_desc = gfc_evaluate_now (desc, &se->pre);
 
2684
   gfc_conv_descriptor_data_set (&se->pre, res_desc, null_pointer_node);
 
2685
-  se->expr = gfc_build_addr_expr (TREE_TYPE (se->expr), res_desc);
 
2686
+  se->expr = gfc_build_addr_expr (NULL_TREE, res_desc);
 
2687
 
 
2688
   /* Free the lhs after the function call and copy the result data to
 
2689
      the lhs descriptor.  */
 
2690
Index: gcc/fortran/decl.c
 
2691
===================================================================
 
2692
--- a/src/gcc/fortran/decl.c    (.../tags/gcc_4_8_3_release)
 
2693
+++ b/src/gcc/fortran/decl.c    (.../branches/gcc-4_8-branch)
 
2694
@@ -1996,6 +1996,13 @@
 
2695
       if (gfc_notify_std (GFC_STD_GNU, "Old-style "
 
2696
                          "initialization at %C") == FAILURE)
 
2697
        return MATCH_ERROR;
 
2698
+      else if (gfc_current_state () == COMP_DERIVED)
 
2699
+       {
 
2700
+         gfc_error ("Invalid old style initialization for derived type "
 
2701
+                    "component at %C");
 
2702
+         m = MATCH_ERROR;
 
2703
+         goto cleanup;
 
2704
+       }
 
2705
 
 
2706
       return match_old_style_init (name);
 
2707
     }
 
2708
Index: gcc/fortran/ChangeLog
 
2709
===================================================================
 
2710
--- a/src/gcc/fortran/ChangeLog (.../tags/gcc_4_8_3_release)
 
2711
+++ b/src/gcc/fortran/ChangeLog (.../branches/gcc-4_8-branch)
 
2712
@@ -1,3 +1,38 @@
 
2713
+2014-07-19  Paul Thomas  <pault@gcc.gnu.org>
 
2714
+
 
2715
+       Backport from trunk.
 
2716
+       PR fortran/61780
 
2717
+       * dependency.c (gfc_dep_resolver): Index the 'reverse' array so
 
2718
+       that elements are skipped. This then correctly aligns 'reverse'
 
2719
+       with the scalarizer loops.
 
2720
+
 
2721
+2014-07-08  Paul Thomas  <pault@gcc.gnu.org>
 
2722
+
 
2723
+       PR fortran/61459
 
2724
+       PR fortran/58883
 
2725
+       * trans-expr.c (fcncall_realloc_result): Use the natural type
 
2726
+       for the address expression of 'res_desc'.
 
2727
+
 
2728
+2014-07-02  Jakub Jelinek  <jakub@redhat.com>
 
2729
+           Fritz Reese  <Reese-Fritz@zai.com>
 
2730
+
 
2731
+       * decl.c (variable_decl): Reject old style initialization
 
2732
+       for derived type components.
 
2733
+
 
2734
+2014-06-15  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
 
2735
+
 
2736
+       Backport from trunk.
 
2737
+       PR fortran/45187
 
2738
+       * trans-decl.c (gfc_create_module_variable): Don't create
 
2739
+       Cray-pointee decls twice.
 
2740
+
 
2741
+2014-05-26  Janne Blomqvist  <jb@gcc.gnu.org>
 
2742
+
 
2743
+       Backport from mainline
 
2744
+       PR libfortran/61310
 
2745
+       * intrinsics.texi (CTIME): Remove mention of locale-dependent
 
2746
+       behavior.
 
2747
+
 
2748
 2014-05-22  Release Manager
 
2749
 
 
2750
        * GCC 4.8.3 released.
 
2751
Index: gcc/fortran/trans-decl.c
 
2752
===================================================================
 
2753
--- a/src/gcc/fortran/trans-decl.c      (.../tags/gcc_4_8_3_release)
 
2754
+++ b/src/gcc/fortran/trans-decl.c      (.../branches/gcc-4_8-branch)
 
2755
@@ -4084,8 +4084,8 @@
 
2756
     }
 
2757
 
 
2758
   /* Don't generate variables from other modules. Variables from
 
2759
-     COMMONs will already have been generated.  */
 
2760
-  if (sym->attr.use_assoc || sym->attr.in_common)
 
2761
+     COMMONs and Cray pointees will already have been generated.  */
 
2762
+  if (sym->attr.use_assoc || sym->attr.in_common || sym->attr.cray_pointee)
 
2763
     return;
 
2764
 
 
2765
   /* Equivalenced variables arrive here after creation.  */
 
2766
Index: gcc/fortran/dependency.c
 
2767
===================================================================
 
2768
--- a/src/gcc/fortran/dependency.c      (.../tags/gcc_4_8_3_release)
 
2769
+++ b/src/gcc/fortran/dependency.c      (.../branches/gcc-4_8-branch)
 
2770
@@ -1779,6 +1779,7 @@
 
2771
 gfc_dep_resolver (gfc_ref *lref, gfc_ref *rref, gfc_reverse *reverse)
 
2772
 {
 
2773
   int n;
 
2774
+  int m;
 
2775
   gfc_dependency fin_dep;
 
2776
   gfc_dependency this_dep;
 
2777
 
 
2778
@@ -1828,6 +1829,8 @@
 
2779
              break;
 
2780
            }
 
2781
 
 
2782
+         /* Index for the reverse array.  */
 
2783
+         m = -1;
 
2784
          for (n=0; n < lref->u.ar.dimen; n++)
 
2785
            {
 
2786
              /* Assume dependency when either of array reference is vector
 
2787
@@ -1862,31 +1865,37 @@
 
2788
                 The ability to reverse or not is set by previous conditions
 
2789
                 in this dimension.  If reversal is not activated, the
 
2790
                 value GFC_DEP_BACKWARD is reset to GFC_DEP_OVERLAP.  */
 
2791
+
 
2792
+             /* Get the indexing right for the scalarizing loop. If this
 
2793
+                is an element, there is no corresponding loop.  */
 
2794
+             if (lref->u.ar.dimen_type[n] != DIMEN_ELEMENT)
 
2795
+               m++;
 
2796
+
 
2797
              if (rref->u.ar.dimen_type[n] == DIMEN_RANGE
 
2798
                    && lref->u.ar.dimen_type[n] == DIMEN_RANGE)
 
2799
                {
 
2800
                  /* Set reverse if backward dependence and not inhibited.  */
 
2801
-                 if (reverse && reverse[n] == GFC_ENABLE_REVERSE)
 
2802
-                   reverse[n] = (this_dep == GFC_DEP_BACKWARD) ?
 
2803
-                                GFC_REVERSE_SET : reverse[n];
 
2804
+                 if (reverse && reverse[m] == GFC_ENABLE_REVERSE)
 
2805
+                   reverse[m] = (this_dep == GFC_DEP_BACKWARD) ?
 
2806
+                                GFC_REVERSE_SET : reverse[m];
 
2807
 
 
2808
                  /* Set forward if forward dependence and not inhibited.  */
 
2809
-                 if (reverse && reverse[n] == GFC_ENABLE_REVERSE)
 
2810
-                   reverse[n] = (this_dep == GFC_DEP_FORWARD) ?
 
2811
-                                GFC_FORWARD_SET : reverse[n];
 
2812
+                 if (reverse && reverse[m] == GFC_ENABLE_REVERSE)
 
2813
+                   reverse[m] = (this_dep == GFC_DEP_FORWARD) ?
 
2814
+                                GFC_FORWARD_SET : reverse[m];
 
2815
 
 
2816
                  /* Flag up overlap if dependence not compatible with
 
2817
                     the overall state of the expression.  */
 
2818
-                 if (reverse && reverse[n] == GFC_REVERSE_SET
 
2819
+                 if (reverse && reverse[m] == GFC_REVERSE_SET
 
2820
                        && this_dep == GFC_DEP_FORWARD)
 
2821
                    {
 
2822
-                     reverse[n] = GFC_INHIBIT_REVERSE;
 
2823
+                     reverse[m] = GFC_INHIBIT_REVERSE;
 
2824
                      this_dep = GFC_DEP_OVERLAP;
 
2825
                    }
 
2826
-                 else if (reverse && reverse[n] == GFC_FORWARD_SET
 
2827
+                 else if (reverse && reverse[m] == GFC_FORWARD_SET
 
2828
                        && this_dep == GFC_DEP_BACKWARD)
 
2829
                    {
 
2830
-                     reverse[n] = GFC_INHIBIT_REVERSE;
 
2831
+                     reverse[m] = GFC_INHIBIT_REVERSE;
 
2832
                      this_dep = GFC_DEP_OVERLAP;
 
2833
                    }
 
2834
 
 
2835
@@ -1893,7 +1902,7 @@
 
2836
                  /* If no intention of reversing or reversing is explicitly
 
2837
                     inhibited, convert backward dependence to overlap.  */
 
2838
                  if ((reverse == NULL && this_dep == GFC_DEP_BACKWARD)
 
2839
-                     || (reverse != NULL && reverse[n] == GFC_INHIBIT_REVERSE))
 
2840
+                     || (reverse != NULL && reverse[m] == GFC_INHIBIT_REVERSE))
 
2841
                    this_dep = GFC_DEP_OVERLAP;
 
2842
                }
 
2843
 
 
2844
Index: gcc/function.c
 
2845
===================================================================
 
2846
--- a/src/gcc/function.c        (.../tags/gcc_4_8_3_release)
 
2847
+++ b/src/gcc/function.c        (.../branches/gcc-4_8-branch)
 
2848
@@ -1354,9 +1354,13 @@
 
2849
 #define STACK_POINTER_OFFSET   0
 
2850
 #endif
 
2851
 
 
2852
+#if defined (REG_PARM_STACK_SPACE) && !defined (INCOMING_REG_PARM_STACK_SPACE)
 
2853
+#define INCOMING_REG_PARM_STACK_SPACE REG_PARM_STACK_SPACE
 
2854
+#endif
 
2855
+
 
2856
 /* If not defined, pick an appropriate default for the offset of dynamically
 
2857
    allocated memory depending on the value of ACCUMULATE_OUTGOING_ARGS,
 
2858
-   REG_PARM_STACK_SPACE, and OUTGOING_REG_PARM_STACK_SPACE.  */
 
2859
+   INCOMING_REG_PARM_STACK_SPACE, and OUTGOING_REG_PARM_STACK_SPACE.  */
 
2860
 
 
2861
 #ifndef STACK_DYNAMIC_OFFSET
 
2862
 
 
2863
@@ -1368,12 +1372,12 @@
 
2864
    `crtl->outgoing_args_size'.  Nevertheless, we must allow
 
2865
    for it when allocating stack dynamic objects.  */
 
2866
 
 
2867
-#if defined(REG_PARM_STACK_SPACE)
 
2868
+#ifdef INCOMING_REG_PARM_STACK_SPACE
 
2869
 #define STACK_DYNAMIC_OFFSET(FNDECL)   \
 
2870
 ((ACCUMULATE_OUTGOING_ARGS                                                   \
 
2871
   ? (crtl->outgoing_args_size                                \
 
2872
      + (OUTGOING_REG_PARM_STACK_SPACE ((!(FNDECL) ? NULL_TREE : TREE_TYPE (FNDECL))) ? 0 \
 
2873
-                                              : REG_PARM_STACK_SPACE (FNDECL))) \
 
2874
+                                              : INCOMING_REG_PARM_STACK_SPACE (FNDECL))) \
 
2875
   : 0) + (STACK_POINTER_OFFSET))
 
2876
 #else
 
2877
 #define STACK_DYNAMIC_OFFSET(FNDECL)   \
 
2878
@@ -2211,8 +2215,9 @@
 
2879
 #endif
 
2880
   all->args_so_far = pack_cumulative_args (&all->args_so_far_v);
 
2881
 
 
2882
-#ifdef REG_PARM_STACK_SPACE
 
2883
-  all->reg_parm_stack_space = REG_PARM_STACK_SPACE (current_function_decl);
 
2884
+#ifdef INCOMING_REG_PARM_STACK_SPACE
 
2885
+  all->reg_parm_stack_space
 
2886
+    = INCOMING_REG_PARM_STACK_SPACE (current_function_decl);
 
2887
 #endif
 
2888
 }
 
2889
 
 
2890
@@ -4518,6 +4523,7 @@
 
2891
       /* ??? This could be set on a per-function basis by the front-end
 
2892
          but is this worth the hassle?  */
 
2893
       cfun->can_throw_non_call_exceptions = flag_non_call_exceptions;
 
2894
+      cfun->can_delete_dead_exceptions = flag_delete_dead_exceptions;
 
2895
     }
 
2896
 }
 
2897
 
 
2898
Index: gcc/common.opt
 
2899
===================================================================
 
2900
--- a/src/gcc/common.opt        (.../tags/gcc_4_8_3_release)
 
2901
+++ b/src/gcc/common.opt        (.../branches/gcc-4_8-branch)
 
2902
@@ -1226,6 +1226,10 @@
 
2903
 Common Report Var(flag_tm)
 
2904
 Enable support for GNU transactional memory
 
2905
 
 
2906
+fgnu-unique
 
2907
+Common Report Var(flag_gnu_unique) Init(1)
 
2908
+Use STB_GNU_UNIQUE if supported by the assembler
 
2909
+
 
2910
 floop-flatten
 
2911
 Common Ignore
 
2912
 Does nothing. Preserved for backward compatibility.
 
2913
Index: gcc/sched-deps.c
 
2914
===================================================================
 
2915
--- a/src/gcc/sched-deps.c      (.../tags/gcc_4_8_3_release)
 
2916
+++ b/src/gcc/sched-deps.c      (.../branches/gcc-4_8-branch)
 
2917
@@ -2744,7 +2744,8 @@
 
2918
           Consider for instance a volatile asm that changes the fpu rounding
 
2919
           mode.  An insn should not be moved across this even if it only uses
 
2920
           pseudo-regs because it might give an incorrectly rounded result.  */
 
2921
-       if (code != ASM_OPERANDS || MEM_VOLATILE_P (x))
 
2922
+       if ((code != ASM_OPERANDS || MEM_VOLATILE_P (x))
 
2923
+           && !DEBUG_INSN_P (insn))
 
2924
          reg_pending_barrier = TRUE_BARRIER;
 
2925
 
 
2926
        /* For all ASM_OPERANDS, we must traverse the vector of input operands.
 
2927
Index: gcc/config/alpha/elf.h
 
2928
===================================================================
 
2929
--- a/src/gcc/config/alpha/elf.h        (.../tags/gcc_4_8_3_release)
 
2930
+++ b/src/gcc/config/alpha/elf.h        (.../branches/gcc-4_8-branch)
 
2931
@@ -126,6 +126,10 @@
 
2932
   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
 
2933
    %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
 
2934
 
 
2935
+/* This variable should be set to 'true' if the target ABI requires
 
2936
+   unwinding tables even when exceptions are not used.  */
 
2937
+#define TARGET_UNWIND_TABLES_DEFAULT true
 
2938
+
 
2939
 /* Select a format to encode pointers in exception handling data.  CODE
 
2940
    is 0 for data, 1 for code labels, 2 for function pointers.  GLOBAL is
 
2941
    true if the symbol may be affected by dynamic relocations.
 
2942
Index: gcc/config/alpha/alpha.c
 
2943
===================================================================
 
2944
--- a/src/gcc/config/alpha/alpha.c      (.../tags/gcc_4_8_3_release)
 
2945
+++ b/src/gcc/config/alpha/alpha.c      (.../branches/gcc-4_8-branch)
 
2946
@@ -8658,6 +8658,11 @@
 
2947
                        }
 
2948
                      break;
 
2949
 
 
2950
+                   case BARRIER:
 
2951
+                     /* __builtin_unreachable can expand to no code at all,
 
2952
+                        leaving (barrier) RTXes in the instruction stream.  */
 
2953
+                     goto close_shadow_notrapb;
 
2954
+
 
2955
                    case JUMP_INSN:
 
2956
                    case CALL_INSN:
 
2957
                    case CODE_LABEL:
 
2958
@@ -8673,6 +8678,7 @@
 
2959
                  n = emit_insn_before (gen_trapb (), i);
 
2960
                  PUT_MODE (n, TImode);
 
2961
                  PUT_MODE (i, TImode);
 
2962
+               close_shadow_notrapb:
 
2963
                  trap_pending = 0;
 
2964
                  shadow.used.i = 0;
 
2965
                  shadow.used.fp = 0;
 
2966
Index: gcc/config/elfos.h
 
2967
===================================================================
 
2968
--- a/src/gcc/config/elfos.h    (.../tags/gcc_4_8_3_release)
 
2969
+++ b/src/gcc/config/elfos.h    (.../branches/gcc-4_8-branch)
 
2970
@@ -287,7 +287,7 @@
 
2971
 /* Write the extra assembler code needed to declare an object properly.  */
 
2972
 
 
2973
 #ifdef HAVE_GAS_GNU_UNIQUE_OBJECT
 
2974
-#define USE_GNU_UNIQUE_OBJECT 1
 
2975
+#define USE_GNU_UNIQUE_OBJECT flag_gnu_unique
 
2976
 #else
 
2977
 #define USE_GNU_UNIQUE_OBJECT 0
 
2978
 #endif
 
2979
Index: gcc/config/sparc/sync.md
 
2980
===================================================================
 
2981
--- a/src/gcc/config/sparc/sync.md      (.../tags/gcc_4_8_3_release)
 
2982
+++ b/src/gcc/config/sparc/sync.md      (.../branches/gcc-4_8-branch)
 
2983
@@ -64,11 +64,19 @@
 
2984
   "stbar"
 
2985
   [(set_attr "type" "multi")])
 
2986
 
 
2987
+;; For LEON3, STB has the effect of membar #StoreLoad.
 
2988
+(define_insn "*membar_storeload_leon3"
 
2989
+  [(set (match_operand:BLK 0 "" "")
 
2990
+       (unspec:BLK [(match_dup 0) (const_int 2)] UNSPEC_MEMBAR))]
 
2991
+  "TARGET_LEON3"
 
2992
+  "stb\t%%g0, [%%sp-1]"
 
2993
+  [(set_attr "type" "store")])
 
2994
+
 
2995
 ;; For V8, LDSTUB has the effect of membar #StoreLoad.
 
2996
 (define_insn "*membar_storeload"
 
2997
   [(set (match_operand:BLK 0 "" "")
 
2998
        (unspec:BLK [(match_dup 0) (const_int 2)] UNSPEC_MEMBAR))]
 
2999
-  "TARGET_V8"
 
3000
+  "TARGET_V8 && !TARGET_LEON3"
 
3001
   "ldstub\t[%%sp-1], %%g0"
 
3002
   [(set_attr "type" "multi")])
 
3003
 
 
3004
Index: gcc/config/i386/i386.md
 
3005
===================================================================
 
3006
--- a/src/gcc/config/i386/i386.md       (.../tags/gcc_4_8_3_release)
 
3007
+++ b/src/gcc/config/i386/i386.md       (.../branches/gcc-4_8-branch)
 
3008
@@ -5339,66 +5339,37 @@
 
3009
 
 
3010
 ;; Avoid store forwarding (partial memory) stall penalty by extending
 
3011
 ;; SImode value to DImode through XMM register instead of pushing two
 
3012
-;; SImode values to stack. Note that even !TARGET_INTER_UNIT_MOVES
 
3013
-;; targets benefit from this optimization. Also note that fild
 
3014
-;; loads from memory only.
 
3015
+;; SImode values to stack. Also note that fild loads from memory only.
 
3016
 
 
3017
-(define_insn "*floatunssi<mode>2_1"
 
3018
-  [(set (match_operand:X87MODEF 0 "register_operand" "=f,f")
 
3019
+(define_insn_and_split "*floatunssi<mode>2_i387_with_xmm"
 
3020
+  [(set (match_operand:X87MODEF 0 "register_operand" "=f")
 
3021
        (unsigned_float:X87MODEF
 
3022
-         (match_operand:SI 1 "nonimmediate_operand" "x,m")))
 
3023
-   (clobber (match_operand:DI 2 "memory_operand" "=m,m"))
 
3024
-   (clobber (match_scratch:SI 3 "=X,x"))]
 
3025
+         (match_operand:SI 1 "nonimmediate_operand" "rm")))
 
3026
+   (clobber (match_scratch:DI 3 "=x"))
 
3027
+   (clobber (match_operand:DI 2 "memory_operand" "=m"))]
 
3028
   "!TARGET_64BIT
 
3029
    && TARGET_80387 && X87_ENABLE_FLOAT (<X87MODEF:MODE>mode, DImode)
 
3030
-   && TARGET_SSE"
 
3031
+   && TARGET_SSE2 && TARGET_INTER_UNIT_MOVES"
 
3032
   "#"
 
3033
+  "&& reload_completed"
 
3034
+  [(set (match_dup 3) (zero_extend:DI (match_dup 1)))
 
3035
+   (set (match_dup 2) (match_dup 3))
 
3036
+   (set (match_dup 0)
 
3037
+       (float:X87MODEF (match_dup 2)))]
 
3038
+  ""
 
3039
   [(set_attr "type" "multi")
 
3040
    (set_attr "mode" "<MODE>")])
 
3041
 
 
3042
-(define_split
 
3043
-  [(set (match_operand:X87MODEF 0 "register_operand")
 
3044
-       (unsigned_float:X87MODEF
 
3045
-         (match_operand:SI 1 "register_operand")))
 
3046
-   (clobber (match_operand:DI 2 "memory_operand"))
 
3047
-   (clobber (match_scratch:SI 3))]
 
3048
-  "!TARGET_64BIT
 
3049
-   && TARGET_80387 && X87_ENABLE_FLOAT (<X87MODEF:MODE>mode, DImode)
 
3050
-   && TARGET_SSE
 
3051
-   && reload_completed"
 
3052
-  [(set (match_dup 2) (match_dup 1))
 
3053
-   (set (match_dup 0)
 
3054
-       (float:X87MODEF (match_dup 2)))]
 
3055
-  "operands[1] = simplify_gen_subreg (DImode, operands[1], SImode, 0);")
 
3056
-
 
3057
-(define_split
 
3058
-  [(set (match_operand:X87MODEF 0 "register_operand")
 
3059
-       (unsigned_float:X87MODEF
 
3060
-         (match_operand:SI 1 "memory_operand")))
 
3061
-   (clobber (match_operand:DI 2 "memory_operand"))
 
3062
-   (clobber (match_scratch:SI 3))]
 
3063
-  "!TARGET_64BIT
 
3064
-   && TARGET_80387 && X87_ENABLE_FLOAT (<X87MODEF:MODE>mode, DImode)
 
3065
-   && TARGET_SSE
 
3066
-   && reload_completed"
 
3067
-  [(set (match_dup 2) (match_dup 3))
 
3068
-   (set (match_dup 0)
 
3069
-       (float:X87MODEF (match_dup 2)))]
 
3070
-{
 
3071
-  emit_move_insn (operands[3], operands[1]);
 
3072
-  operands[3] = simplify_gen_subreg (DImode, operands[3], SImode, 0);
 
3073
-})
 
3074
-
 
3075
 (define_expand "floatunssi<mode>2"
 
3076
   [(parallel
 
3077
      [(set (match_operand:X87MODEF 0 "register_operand")
 
3078
           (unsigned_float:X87MODEF
 
3079
             (match_operand:SI 1 "nonimmediate_operand")))
 
3080
-      (clobber (match_dup 2))
 
3081
-      (clobber (match_scratch:SI 3))])]
 
3082
+      (clobber (match_scratch:DI 3))
 
3083
+      (clobber (match_dup 2))])]
 
3084
   "!TARGET_64BIT
 
3085
    && ((TARGET_80387 && X87_ENABLE_FLOAT (<X87MODEF:MODE>mode, DImode)
 
3086
-       && TARGET_SSE)
 
3087
+       && TARGET_SSE2 && TARGET_INTER_UNIT_MOVES)
 
3088
        || (SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH))"
 
3089
 {
 
3090
   if (SSE_FLOAT_MODE_P (<MODE>mode) && TARGET_SSE_MATH)
 
3091
Index: gcc/config/i386/driver-i386.c
 
3092
===================================================================
 
3093
--- a/src/gcc/config/i386/driver-i386.c (.../tags/gcc_4_8_3_release)
 
3094
+++ b/src/gcc/config/i386/driver-i386.c (.../branches/gcc-4_8-branch)
 
3095
@@ -713,6 +713,11 @@
 
3096
                    /* Assume Core 2.  */
 
3097
                    cpu = "core2";
 
3098
                }
 
3099
+             else if (has_longmode)
 
3100
+               /* Perhaps some emulator?  Assume x86-64, otherwise gcc
 
3101
+                  -march=native would be unusable for 64-bit compilations,
 
3102
+                  as all the CPUs below are 32-bit only.  */
 
3103
+               cpu = "x86-64";
 
3104
              else if (has_sse3)
 
3105
                /* It is Core Duo.  */
 
3106
                cpu = "pentium-m";
 
3107
Index: gcc/config/i386/i386.c
 
3108
===================================================================
 
3109
--- a/src/gcc/config/i386/i386.c        (.../tags/gcc_4_8_3_release)
 
3110
+++ b/src/gcc/config/i386/i386.c        (.../branches/gcc-4_8-branch)
 
3111
@@ -20505,7 +20505,7 @@
 
3112
          t1 = gen_reg_rtx (V32QImode);
 
3113
          t2 = gen_reg_rtx (V32QImode);
 
3114
          t3 = gen_reg_rtx (V32QImode);
 
3115
-         vt2 = GEN_INT (128);
 
3116
+         vt2 = GEN_INT (-128);
 
3117
          for (i = 0; i < 32; i++)
 
3118
            vec[i] = vt2;
 
3119
          vt = gen_rtx_CONST_VECTOR (V32QImode, gen_rtvec_v (32, vec));
 
3120
@@ -24640,13 +24640,17 @@
 
3121
              {
 
3122
                edge e;
 
3123
                edge_iterator ei;
 
3124
-               /* Assume that region is SCC, i.e. all immediate predecessors
 
3125
-                  of non-head block are in the same region.  */
 
3126
+
 
3127
+               /* Regions are SCCs with the exception of selective
 
3128
+                  scheduling with pipelining of outer blocks enabled.
 
3129
+                  So also check that immediate predecessors of a non-head
 
3130
+                  block are in the same region.  */
 
3131
                FOR_EACH_EDGE (e, ei, bb->preds)
 
3132
                  {
 
3133
                    /* Avoid creating of loop-carried dependencies through
 
3134
-                      using topological odering in region.  */
 
3135
-                   if (BLOCK_TO_BB (bb->index) > BLOCK_TO_BB (e->src->index))
 
3136
+                      using topological ordering in the region.  */
 
3137
+                   if (rgn == CONTAINING_RGN (e->src->index)
 
3138
+                       && BLOCK_TO_BB (bb->index) > BLOCK_TO_BB (e->src->index))
 
3139
                      add_dependee_for_func_arg (first_arg, e->src); 
 
3140
                  }
 
3141
              }
 
3142
Index: gcc/config/microblaze/predicates.md
 
3143
===================================================================
 
3144
--- a/src/gcc/config/microblaze/predicates.md   (.../tags/gcc_4_8_3_release)
 
3145
+++ b/src/gcc/config/microblaze/predicates.md   (.../branches/gcc-4_8-branch)
 
3146
@@ -85,10 +85,6 @@
 
3147
   (ior (match_operand 0 "const_0_operand")
 
3148
        (match_operand 0 "register_operand")))
 
3149
 
 
3150
-(define_predicate "reg_or_mem_operand"
 
3151
-  (ior (match_operand 0 "memory_operand")
 
3152
-       (match_operand 0 "register_operand")))
 
3153
-
 
3154
 ;;  Return if the operand is either the PC or a label_ref.  
 
3155
 (define_special_predicate "pc_or_label_operand"
 
3156
   (ior (match_code "pc,label_ref")
 
3157
Index: gcc/config/microblaze/microblaze.md
 
3158
===================================================================
 
3159
--- a/src/gcc/config/microblaze/microblaze.md   (.../tags/gcc_4_8_3_release)
 
3160
+++ b/src/gcc/config/microblaze/microblaze.md   (.../branches/gcc-4_8-branch)
 
3161
@@ -1119,18 +1119,6 @@
 
3162
   }
 
3163
 )
 
3164
 
 
3165
-;;Load and store reverse
 
3166
-(define_insn "movsi4_rev"
 
3167
-  [(set (match_operand:SI 0 "reg_or_mem_operand" "=r,Q")
 
3168
-        (bswap:SI (match_operand:SF 1 "reg_or_mem_operand" "Q,r")))]
 
3169
-  "TARGET_REORDER"
 
3170
-  "@
 
3171
-   lwr\t%0,%y1,r0
 
3172
-   swr\t%1,%y0,r0"
 
3173
-  [(set_attr "type"     "load,store")
 
3174
-  (set_attr "mode"      "SI")
 
3175
-  (set_attr "length"    "4,4")])
 
3176
-
 
3177
 ;; 32-bit floating point moves
 
3178
 
 
3179
 (define_expand "movsf"
 
3180
Index: gcc/config/avr/avr-fixed.md
 
3181
===================================================================
 
3182
--- a/src/gcc/config/avr/avr-fixed.md   (.../tags/gcc_4_8_3_release)
 
3183
+++ b/src/gcc/config/avr/avr-fixed.md   (.../branches/gcc-4_8-branch)
 
3184
@@ -430,8 +430,8 @@
 
3185
       }
 
3186
 
 
3187
     // Input and output of the libgcc function
 
3188
-    const unsigned int regno_in[]  = { -1, 22, 22, -1, 18 };
 
3189
-    const unsigned int regno_out[] = { -1, 24, 24, -1, 22 };
 
3190
+    const unsigned int regno_in[]  = { -1U, 22, 22, -1U, 18 };
 
3191
+    const unsigned int regno_out[] = { -1U, 24, 24, -1U, 22 };
 
3192
 
 
3193
     operands[3] = gen_rtx_REG (<MODE>mode, regno_out[(size_t) GET_MODE_SIZE (<MODE>mode)]);
 
3194
     operands[4] = gen_rtx_REG (<MODE>mode,  regno_in[(size_t) GET_MODE_SIZE (<MODE>mode)]);
 
3195
Index: gcc/config/avr/avr.md
 
3196
===================================================================
 
3197
--- a/src/gcc/config/avr/avr.md (.../tags/gcc_4_8_3_release)
 
3198
+++ b/src/gcc/config/avr/avr.md (.../branches/gcc-4_8-branch)
 
3199
@@ -367,6 +367,15 @@
 
3200
   ""
 
3201
   {
 
3202
     int i;
 
3203
+
 
3204
+    // Avoid (subreg (mem)) for non-generic address spaces below.  Because
 
3205
+    // of the poor addressing capabilities of these spaces it's better to
 
3206
+    // load them in one chunk.  And it avoids PR61443.
 
3207
+
 
3208
+    if (MEM_P (operands[0])
 
3209
+        && !ADDR_SPACE_GENERIC_P (MEM_ADDR_SPACE (operands[0])))
 
3210
+      operands[0] = copy_to_mode_reg (<MODE>mode, operands[0]);
 
3211
+
 
3212
     for (i = GET_MODE_SIZE (<MODE>mode) - 1; i >= 0; --i)
 
3213
       {
 
3214
         rtx part = simplify_gen_subreg (QImode, operands[0], <MODE>mode, i);
 
3215
Index: gcc/config/avr/avr.h
 
3216
===================================================================
 
3217
--- a/src/gcc/config/avr/avr.h  (.../tags/gcc_4_8_3_release)
 
3218
+++ b/src/gcc/config/avr/avr.h  (.../branches/gcc-4_8-branch)
 
3219
@@ -250,18 +250,18 @@
 
3220
 #define REG_CLASS_CONTENTS {                                           \
 
3221
   {0x00000000,0x00000000},     /* NO_REGS */                           \
 
3222
   {0x00000001,0x00000000},     /* R0_REG */                            \
 
3223
-  {3 << REG_X,0x00000000},      /* POINTER_X_REGS, r26 - r27 */                \
 
3224
-  {3 << REG_Y,0x00000000},      /* POINTER_Y_REGS, r28 - r29 */                \
 
3225
-  {3 << REG_Z,0x00000000},      /* POINTER_Z_REGS, r30 - r31 */                \
 
3226
+  {3u << REG_X,0x00000000},     /* POINTER_X_REGS, r26 - r27 */                \
 
3227
+  {3u << REG_Y,0x00000000},     /* POINTER_Y_REGS, r28 - r29 */                \
 
3228
+  {3u << REG_Z,0x00000000},     /* POINTER_Z_REGS, r30 - r31 */                \
 
3229
   {0x00000000,0x00000003},     /* STACK_REG, STACK */                  \
 
3230
-  {(3 << REG_Y) | (3 << REG_Z),                                                \
 
3231
+  {(3u << REG_Y) | (3u << REG_Z),                                      \
 
3232
      0x00000000},              /* BASE_POINTER_REGS, r28 - r31 */      \
 
3233
-  {(3 << REG_X) | (3 << REG_Y) | (3 << REG_Z),                         \
 
3234
+  {(3u << REG_X) | (3u << REG_Y) | (3u << REG_Z),                      \
 
3235
      0x00000000},              /* POINTER_REGS, r26 - r31 */           \
 
3236
-  {(3 << REG_X) | (3 << REG_Y) | (3 << REG_Z) | (3 << REG_W),          \
 
3237
+  {(3u << REG_X) | (3u << REG_Y) | (3u << REG_Z) | (3u << REG_W),      \
 
3238
      0x00000000},              /* ADDW_REGS, r24 - r31 */              \
 
3239
   {0x00ff0000,0x00000000},     /* SIMPLE_LD_REGS r16 - r23 */          \
 
3240
-  {(3 << REG_X)|(3 << REG_Y)|(3 << REG_Z)|(3 << REG_W)|(0xff << 16),   \
 
3241
+  {(3u << REG_X)|(3u << REG_Y)|(3u << REG_Z)|(3u << REG_W)|(0xffu << 16),\
 
3242
      0x00000000},      /* LD_REGS, r16 - r31 */                        \
 
3243
   {0x0000ffff,0x00000000},     /* NO_LD_REGS  r0 - r15 */              \
 
3244
   {0xffffffff,0x00000000},     /* GENERAL_REGS, r0 - r31 */            \
 
3245
Index: gcc/config/aarch64/arm_neon.h
 
3246
===================================================================
 
3247
--- a/src/gcc/config/aarch64/arm_neon.h (.../tags/gcc_4_8_3_release)
 
3248
+++ b/src/gcc/config/aarch64/arm_neon.h (.../branches/gcc-4_8-branch)
 
3249
@@ -13815,7 +13815,7 @@
 
3250
   int16x4_t result;
 
3251
   __asm__ ("sqdmulh %0.4h,%1.4h,%2.h[0]"
 
3252
            : "=w"(result)
 
3253
-           : "w"(a), "w"(b)
 
3254
+           : "w"(a), "x"(b)
 
3255
            : /* No clobbers */);
 
3256
   return result;
 
3257
 }
 
3258
@@ -13837,7 +13837,7 @@
 
3259
   int16x8_t result;
 
3260
   __asm__ ("sqdmulh %0.8h,%1.8h,%2.h[0]"
 
3261
            : "=w"(result)
 
3262
-           : "w"(a), "w"(b)
 
3263
+           : "w"(a), "x"(b)
 
3264
            : /* No clobbers */);
 
3265
   return result;
 
3266
 }
 
3267
Index: gcc/config/aarch64/aarch64.md
 
3268
===================================================================
 
3269
--- a/src/gcc/config/aarch64/aarch64.md (.../tags/gcc_4_8_3_release)
 
3270
+++ b/src/gcc/config/aarch64/aarch64.md (.../branches/gcc-4_8-branch)
 
3271
@@ -3292,6 +3292,7 @@
 
3272
         (unspec:DI [(match_operand:DI 0 "aarch64_valid_symref" "S")]
 
3273
                   UNSPEC_TLSDESC))
 
3274
    (clobber (reg:DI LR_REGNUM))
 
3275
+   (clobber (reg:CC CC_REGNUM))
 
3276
    (clobber (match_scratch:DI 1 "=r"))]
 
3277
   "TARGET_TLS_DESC"
 
3278
   "adrp\\tx0, %A0\;ldr\\t%1, [x0, #%L0]\;add\\tx0, x0, %L0\;.tlsdesccall\\t%0\;blr\\t%1"
 
3279
Index: gcc/config/aarch64/aarch64.c
 
3280
===================================================================
 
3281
--- a/src/gcc/config/aarch64/aarch64.c  (.../tags/gcc_4_8_3_release)
 
3282
+++ b/src/gcc/config/aarch64/aarch64.c  (.../branches/gcc-4_8-branch)
 
3283
@@ -1201,6 +1201,7 @@
 
3284
   CUMULATIVE_ARGS *pcum = get_cumulative_args (pcum_v);
 
3285
   int ncrn, nvrn, nregs;
 
3286
   bool allocate_ncrn, allocate_nvrn;
 
3287
+  HOST_WIDE_INT size;
 
3288
 
 
3289
   /* We need to do this once per argument.  */
 
3290
   if (pcum->aapcs_arg_processed)
 
3291
@@ -1208,6 +1209,11 @@
 
3292
 
 
3293
   pcum->aapcs_arg_processed = true;
 
3294
 
 
3295
+  /* Size in bytes, rounded to the nearest multiple of 8 bytes.  */
 
3296
+  size
 
3297
+    = AARCH64_ROUND_UP (type ? int_size_in_bytes (type) : GET_MODE_SIZE (mode),
 
3298
+                       UNITS_PER_WORD);
 
3299
+
 
3300
   allocate_ncrn = (type) ? !(FLOAT_TYPE_P (type)) : !FLOAT_MODE_P (mode);
 
3301
   allocate_nvrn = aarch64_vfp_is_call_candidate (pcum_v,
 
3302
                                                 mode,
 
3303
@@ -1258,10 +1264,8 @@
 
3304
     }
 
3305
 
 
3306
   ncrn = pcum->aapcs_ncrn;
 
3307
-  nregs = ((type ? int_size_in_bytes (type) : GET_MODE_SIZE (mode))
 
3308
-          + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
 
3309
+  nregs = size / UNITS_PER_WORD;
 
3310
 
 
3311
-
 
3312
   /* C6 - C9.  though the sign and zero extension semantics are
 
3313
      handled elsewhere.  This is the case where the argument fits
 
3314
      entirely general registers.  */
 
3315
@@ -1309,13 +1313,12 @@
 
3316
   pcum->aapcs_nextncrn = NUM_ARG_REGS;
 
3317
 
 
3318
   /* The argument is passed on stack; record the needed number of words for
 
3319
-     this argument (we can re-use NREGS) and align the total size if
 
3320
-     necessary.  */
 
3321
+     this argument and align the total size if necessary.  */
 
3322
 on_stack:
 
3323
-  pcum->aapcs_stack_words = nregs;
 
3324
+  pcum->aapcs_stack_words = size / UNITS_PER_WORD;
 
3325
   if (aarch64_function_arg_alignment (mode, type) == 16 * BITS_PER_UNIT)
 
3326
     pcum->aapcs_stack_size = AARCH64_ROUND_UP (pcum->aapcs_stack_size,
 
3327
-                                              16 / UNITS_PER_WORD) + 1;
 
3328
+                                              16 / UNITS_PER_WORD);
 
3329
   return;
 
3330
 }
 
3331
 
 
3332
Index: gcc/config/aarch64/aarch64-linux.h
 
3333
===================================================================
 
3334
--- a/src/gcc/config/aarch64/aarch64-linux.h    (.../tags/gcc_4_8_3_release)
 
3335
+++ b/src/gcc/config/aarch64/aarch64-linux.h    (.../branches/gcc-4_8-branch)
 
3336
@@ -43,4 +43,6 @@
 
3337
     }                                          \
 
3338
   while (0)
 
3339
 
 
3340
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
 
3341
+
 
3342
 #endif  /* GCC_AARCH64_LINUX_H */
 
3343
Index: gcc/config/rs6000/htm.md
 
3344
===================================================================
 
3345
--- a/src/gcc/config/rs6000/htm.md      (.../tags/gcc_4_8_3_release)
 
3346
+++ b/src/gcc/config/rs6000/htm.md      (.../branches/gcc-4_8-branch)
 
3347
@@ -179,7 +179,7 @@
 
3348
                             (const_int 0)]
 
3349
                            UNSPECV_HTM_TABORTWCI))
 
3350
    (set (subreg:CC (match_dup 2) 0) (match_dup 1))
 
3351
-   (set (match_dup 3) (lshiftrt:SI (match_dup 2) (const_int 24)))
 
3352
+   (set (match_dup 3) (lshiftrt:SI (match_dup 2) (const_int 28)))
 
3353
    (parallel [(set (match_operand:SI 0 "int_reg_operand" "")
 
3354
                   (and:SI (match_dup 3) (const_int 15)))
 
3355
               (clobber (scratch:CC))])]
 
3356
Index: gcc/config/rs6000/freebsd64.h
 
3357
===================================================================
 
3358
--- a/src/gcc/config/rs6000/freebsd64.h (.../tags/gcc_4_8_3_release)
 
3359
+++ b/src/gcc/config/rs6000/freebsd64.h (.../branches/gcc-4_8-branch)
 
3360
@@ -367,7 +367,7 @@
 
3361
 /* PowerPC64 Linux word-aligns FP doubles when -malign-power is given.  */
 
3362
 #undef  ADJUST_FIELD_ALIGN
 
3363
 #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
 
3364
-  ((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE)     \
 
3365
+  (rs6000_special_adjust_field_align_p ((FIELD), (COMPUTED))           \
 
3366
    ? 128                                                                \
 
3367
    : (TARGET_64BIT                                                      \
 
3368
       && TARGET_ALIGN_NATURAL == 0                                      \
 
3369
Index: gcc/config/rs6000/rs6000-protos.h
 
3370
===================================================================
 
3371
--- a/src/gcc/config/rs6000/rs6000-protos.h     (.../tags/gcc_4_8_3_release)
 
3372
+++ b/src/gcc/config/rs6000/rs6000-protos.h     (.../branches/gcc-4_8-branch)
 
3373
@@ -153,6 +153,7 @@
 
3374
 
 
3375
 #ifdef TREE_CODE
 
3376
 extern unsigned int rs6000_data_alignment (tree, unsigned int, enum data_align);
 
3377
+extern bool rs6000_special_adjust_field_align_p (tree, unsigned int);
 
3378
 extern unsigned int rs6000_special_round_type_align (tree, unsigned int,
 
3379
                                                     unsigned int);
 
3380
 extern unsigned int darwin_rs6000_special_round_type_align (tree, unsigned int,
 
3381
@@ -161,7 +162,7 @@
 
3382
 extern rtx rs6000_libcall_value (enum machine_mode);
 
3383
 extern rtx rs6000_va_arg (tree, tree);
 
3384
 extern int function_ok_for_sibcall (tree);
 
3385
-extern int rs6000_reg_parm_stack_space (tree);
 
3386
+extern int rs6000_reg_parm_stack_space (tree, bool);
 
3387
 extern void rs6000_elf_declare_function_name (FILE *, const char *, tree);
 
3388
 extern bool rs6000_elf_in_small_data_p (const_tree);
 
3389
 #ifdef ARGS_SIZE_RTX
 
3390
Index: gcc/config/rs6000/rs6000-builtin.def
 
3391
===================================================================
 
3392
--- a/src/gcc/config/rs6000/rs6000-builtin.def  (.../tags/gcc_4_8_3_release)
 
3393
+++ b/src/gcc/config/rs6000/rs6000-builtin.def  (.../branches/gcc-4_8-branch)
 
3394
@@ -622,20 +622,13 @@
 
3395
                     | RS6000_BTC_TERNARY),                             \
 
3396
                    CODE_FOR_ ## ICODE)                 /* ICODE */
 
3397
 
 
3398
-/* Miscellaneous builtins.  */
 
3399
-#define BU_MISC_1(ENUM, NAME, ATTR, ICODE)                             \
 
3400
+/* 128-bit long double floating point builtins.  */
 
3401
+#define BU_LDBL128_2(ENUM, NAME, ATTR, ICODE)                          \
 
3402
   RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM,             /* ENUM */      \
 
3403
                    "__builtin_" NAME,                  /* NAME */      \
 
3404
-                   RS6000_BTM_HARD_FLOAT,              /* MASK */      \
 
3405
+                   (RS6000_BTM_HARD_FLOAT              /* MASK */      \
 
3406
+                    | RS6000_BTM_LDBL128),                             \
 
3407
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
 
3408
-                    | RS6000_BTC_UNARY),                               \
 
3409
-                   CODE_FOR_ ## ICODE)                 /* ICODE */
 
3410
-
 
3411
-#define BU_MISC_2(ENUM, NAME, ATTR, ICODE)                             \
 
3412
-  RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM,             /* ENUM */      \
 
3413
-                   "__builtin_" NAME,                  /* NAME */      \
 
3414
-                   RS6000_BTM_HARD_FLOAT,              /* MASK */      \
 
3415
-                   (RS6000_BTC_ ## ATTR                /* ATTR */      \
 
3416
                     | RS6000_BTC_BINARY),                              \
 
3417
                    CODE_FOR_ ## ICODE)                 /* ICODE */
 
3418
 
 
3419
@@ -1593,10 +1586,8 @@
 
3420
 BU_DFP_MISC_2 (PACK_TD,                "pack_dec128",          CONST,  packtd)
 
3421
 BU_DFP_MISC_2 (UNPACK_TD,      "unpack_dec128",        CONST,  unpacktd)
 
3422
 
 
3423
-BU_MISC_2 (PACK_TF,            "pack_longdouble",      CONST,  packtf)
 
3424
-BU_MISC_2 (UNPACK_TF,          "unpack_longdouble",    CONST,  unpacktf)
 
3425
-BU_MISC_1 (UNPACK_TF_0,                "longdouble_dw0",       CONST,  unpacktf_0)
 
3426
-BU_MISC_1 (UNPACK_TF_1,                "longdouble_dw1",       CONST,  unpacktf_1)
 
3427
+BU_LDBL128_2 (PACK_TF,         "pack_longdouble",      CONST,  packtf)
 
3428
+BU_LDBL128_2 (UNPACK_TF,       "unpack_longdouble",    CONST,  unpacktf)
 
3429
 
 
3430
 BU_P7_MISC_2 (PACK_V1TI,       "pack_vector_int128",   CONST,  packv1ti)
 
3431
 BU_P7_MISC_2 (UNPACK_V1TI,     "unpack_vector_int128", CONST,  unpackv1ti)
 
3432
Index: gcc/config/rs6000/linux64.h
 
3433
===================================================================
 
3434
--- a/src/gcc/config/rs6000/linux64.h   (.../tags/gcc_4_8_3_release)
 
3435
+++ b/src/gcc/config/rs6000/linux64.h   (.../branches/gcc-4_8-branch)
 
3436
@@ -246,7 +246,7 @@
 
3437
 /* PowerPC64 Linux word-aligns FP doubles when -malign-power is given.  */
 
3438
 #undef  ADJUST_FIELD_ALIGN
 
3439
 #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
 
3440
-  ((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE)    \
 
3441
+  (rs6000_special_adjust_field_align_p ((FIELD), (COMPUTED))           \
 
3442
    ? 128                                                               \
 
3443
    : (TARGET_64BIT                                                     \
 
3444
       && TARGET_ALIGN_NATURAL == 0                                     \
 
3445
Index: gcc/config/rs6000/rs6000.c
 
3446
===================================================================
 
3447
--- a/src/gcc/config/rs6000/rs6000.c    (.../tags/gcc_4_8_3_release)
 
3448
+++ b/src/gcc/config/rs6000/rs6000.c    (.../branches/gcc-4_8-branch)
 
3449
@@ -3014,7 +3014,8 @@
 
3450
          | ((TARGET_CRYPTO)                ? RS6000_BTM_CRYPTO    : 0)
 
3451
          | ((TARGET_HTM)                   ? RS6000_BTM_HTM       : 0)
 
3452
          | ((TARGET_DFP)                   ? RS6000_BTM_DFP       : 0)
 
3453
-         | ((TARGET_HARD_FLOAT)            ? RS6000_BTM_HARD_FLOAT : 0));
 
3454
+         | ((TARGET_HARD_FLOAT)            ? RS6000_BTM_HARD_FLOAT : 0)
 
3455
+         | ((TARGET_LONG_DOUBLE_128)       ? RS6000_BTM_LDBL128 : 0));
 
3456
 }
 
3457
 
 
3458
 /* Override command line options.  Mostly we process the processor type and
 
3459
@@ -5861,6 +5862,34 @@
 
3460
   return align;
 
3461
 }
 
3462
 
 
3463
+/* Previous GCC releases forced all vector types to have 16-byte alignment.  */
 
3464
+
 
3465
+bool
 
3466
+rs6000_special_adjust_field_align_p (tree field, unsigned int computed)
 
3467
+{
 
3468
+  if (TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (field)) == VECTOR_TYPE)
 
3469
+    {
 
3470
+      if (computed != 128)
 
3471
+       {
 
3472
+         static bool warned;
 
3473
+         if (!warned && warn_psabi)
 
3474
+           {
 
3475
+             warned = true;
 
3476
+             inform (input_location,
 
3477
+                     "the layout of aggregates containing vectors with"
 
3478
+                     " %d-byte alignment will change in a future GCC release",
 
3479
+                     computed / BITS_PER_UNIT);
 
3480
+           }
 
3481
+       }
 
3482
+      /* GCC 4.8/4.9 Note: To avoid any ABI change on a release branch, we
 
3483
+        keep the special treatment of vector types, but warn if there will
 
3484
+        be differences in future GCC releases.  */
 
3485
+      return true;
 
3486
+    }
 
3487
+
 
3488
+  return false;
 
3489
+}
 
3490
+
 
3491
 /* AIX increases natural record alignment to doubleword if the first
 
3492
    field is an FP double while the FP fields remain word aligned.  */
 
3493
 
 
3494
@@ -6109,7 +6138,8 @@
 
3495
     return false;
 
3496
 
 
3497
   extra = GET_MODE_SIZE (mode) - UNITS_PER_WORD;
 
3498
-  gcc_assert (extra >= 0);
 
3499
+  if (extra < 0)
 
3500
+    extra = 0;
 
3501
 
 
3502
   if (GET_CODE (addr) == LO_SUM)
 
3503
     /* For lo_sum addresses, we must allow any offset except one that
 
3504
@@ -9198,14 +9228,51 @@
 
3505
           || (type && TREE_CODE (type) == VECTOR_TYPE
 
3506
               && int_size_in_bytes (type) >= 16))
 
3507
     return 128;
 
3508
-  else if (((TARGET_MACHO && rs6000_darwin64_abi)
 
3509
-           || DEFAULT_ABI == ABI_ELFv2
 
3510
-            || (DEFAULT_ABI == ABI_AIX && !rs6000_compat_align_parm))
 
3511
-          && mode == BLKmode
 
3512
-          && type && TYPE_ALIGN (type) > 64)
 
3513
+
 
3514
+  /* Aggregate types that need > 8 byte alignment are quadword-aligned
 
3515
+     in the parameter area in the ELFv2 ABI, and in the AIX ABI unless
 
3516
+     -mcompat-align-parm is used.  */
 
3517
+  if (((DEFAULT_ABI == ABI_AIX && !rs6000_compat_align_parm)
 
3518
+       || DEFAULT_ABI == ABI_ELFv2)
 
3519
+      && type && TYPE_ALIGN (type) > 64)
 
3520
+    {
 
3521
+      /* "Aggregate" means any AGGREGATE_TYPE except for single-element
 
3522
+         or homogeneous float/vector aggregates here.  We already handled
 
3523
+         vector aggregates above, but still need to check for float here. */
 
3524
+      bool aggregate_p = (AGGREGATE_TYPE_P (type)
 
3525
+                         && !SCALAR_FLOAT_MODE_P (elt_mode));
 
3526
+
 
3527
+      /* We used to check for BLKmode instead of the above aggregate type
 
3528
+        check.  Warn when this results in any difference to the ABI.  */
 
3529
+      if (aggregate_p != (mode == BLKmode))
 
3530
+       {
 
3531
+         static bool warned;
 
3532
+         if (!warned && warn_psabi)
 
3533
+           {
 
3534
+             warned = true;
 
3535
+             inform (input_location,
 
3536
+                     "the ABI of passing aggregates with %d-byte alignment"
 
3537
+                     " will change in a future GCC release",
 
3538
+                     (int) TYPE_ALIGN (type) / BITS_PER_UNIT);
 
3539
+           }
 
3540
+       }
 
3541
+
 
3542
+      /* GCC 4.8/4.9 Note: To avoid any ABI change on a release branch, we
 
3543
+        keep using the BLKmode check, but warn if there will be differences
 
3544
+        in future GCC releases.  */
 
3545
+      if (mode == BLKmode)
 
3546
+       return 128;
 
3547
+    }
 
3548
+
 
3549
+  /* Similar for the Darwin64 ABI.  Note that for historical reasons we
 
3550
+     implement the "aggregate type" check as a BLKmode check here; this
 
3551
+     means certain aggregate types are in fact not aligned.  */
 
3552
+  if (TARGET_MACHO && rs6000_darwin64_abi
 
3553
+      && mode == BLKmode
 
3554
+      && type && TYPE_ALIGN (type) > 64)
 
3555
     return 128;
 
3556
-  else
 
3557
-    return PARM_BOUNDARY;
 
3558
+
 
3559
+  return PARM_BOUNDARY;
 
3560
 }
 
3561
 
 
3562
 /* The offset in words to the start of the parameter save area.  */
 
3563
@@ -10243,6 +10310,7 @@
 
3564
          rtx r, off;
 
3565
          int i, k = 0;
 
3566
          unsigned long n_fpreg = (GET_MODE_SIZE (elt_mode) + 7) >> 3;
 
3567
+         int fpr_words;
 
3568
 
 
3569
          /* Do we also need to pass this argument in the parameter
 
3570
             save area?  */
 
3571
@@ -10271,6 +10339,37 @@
 
3572
              rvec[k++] = gen_rtx_EXPR_LIST (VOIDmode, r, off);
 
3573
            }
 
3574
 
 
3575
+         /* If there were not enough FPRs to hold the argument, the rest
 
3576
+            usually goes into memory.  However, if the current position
 
3577
+            is still within the register parameter area, a portion may
 
3578
+            actually have to go into GPRs.
 
3579
+
 
3580
+            Note that it may happen that the portion of the argument
 
3581
+            passed in the first "half" of the first GPR was already
 
3582
+            passed in the last FPR as well.
 
3583
+
 
3584
+            For unnamed arguments, we already set up GPRs to cover the
 
3585
+            whole argument in rs6000_psave_function_arg, so there is
 
3586
+            nothing further to do at this point.
 
3587
+
 
3588
+            GCC 4.8/4.9 Note: This was implemented incorrectly in earlier
 
3589
+            GCC releases.  To avoid any ABI change on the release branch,
 
3590
+            we retain that original implementation here, but warn if we
 
3591
+            encounter a case where the ABI will change in the future.  */
 
3592
+         fpr_words = (i * GET_MODE_SIZE (elt_mode)) / (TARGET_32BIT ? 4 : 8);
 
3593
+         if (i < n_elts && align_words + fpr_words < GP_ARG_NUM_REG
 
3594
+             && cum->nargs_prototype > 0)
 
3595
+            {
 
3596
+             static bool warned;
 
3597
+             if (!warned && warn_psabi)
 
3598
+               {
 
3599
+                 warned = true;
 
3600
+                 inform (input_location,
 
3601
+                         "the ABI of passing homogeneous float aggregates"
 
3602
+                         " will change in a future GCC release");
 
3603
+               }
 
3604
+           }
 
3605
+
 
3606
          return rs6000_finish_function_arg (mode, rvec, k);
 
3607
        }
 
3608
       else if (align_words < GP_ARG_NUM_REG)
 
3609
@@ -10497,10 +10596,9 @@
 
3610
    list, or passes any parameter in memory.  */
 
3611
 
 
3612
 static bool
 
3613
-rs6000_function_parms_need_stack (tree fun)
 
3614
+rs6000_function_parms_need_stack (tree fun, bool incoming)
 
3615
 {
 
3616
-  function_args_iterator args_iter;
 
3617
-  tree arg_type;
 
3618
+  tree fntype, result;
 
3619
   CUMULATIVE_ARGS args_so_far_v;
 
3620
   cumulative_args_t args_so_far;
 
3621
 
 
3622
@@ -10507,26 +10605,57 @@
 
3623
   if (!fun)
 
3624
     /* Must be a libcall, all of which only use reg parms.  */
 
3625
     return false;
 
3626
+
 
3627
+  fntype = fun;
 
3628
   if (!TYPE_P (fun))
 
3629
-    fun = TREE_TYPE (fun);
 
3630
+    fntype = TREE_TYPE (fun);
 
3631
 
 
3632
   /* Varargs functions need the parameter save area.  */
 
3633
-  if (!prototype_p (fun) || stdarg_p (fun))
 
3634
+  if ((!incoming && !prototype_p (fntype)) || stdarg_p (fntype))
 
3635
     return true;
 
3636
 
 
3637
-  INIT_CUMULATIVE_INCOMING_ARGS (args_so_far_v, fun, NULL_RTX);
 
3638
+  INIT_CUMULATIVE_INCOMING_ARGS (args_so_far_v, fntype, NULL_RTX);
 
3639
   args_so_far = pack_cumulative_args (&args_so_far_v);
 
3640
 
 
3641
-  if (aggregate_value_p (TREE_TYPE (fun), fun))
 
3642
+  /* When incoming, we will have been passed the function decl.
 
3643
+     It is necessary to use the decl to handle K&R style functions,
 
3644
+     where TYPE_ARG_TYPES may not be available.  */
 
3645
+  if (incoming)
 
3646
     {
 
3647
-      tree type = build_pointer_type (TREE_TYPE (fun));
 
3648
-      rs6000_parm_needs_stack (args_so_far, type);
 
3649
+      gcc_assert (DECL_P (fun));
 
3650
+      result = DECL_RESULT (fun);
 
3651
     }
 
3652
+  else
 
3653
+    result = TREE_TYPE (fntype);
 
3654
 
 
3655
-  FOREACH_FUNCTION_ARGS (fun, arg_type, args_iter)
 
3656
-    if (rs6000_parm_needs_stack (args_so_far, arg_type))
 
3657
-      return true;
 
3658
+  if (result && aggregate_value_p (result, fntype))
 
3659
+    {
 
3660
+      if (!TYPE_P (result))
 
3661
+       result = TREE_TYPE (result);
 
3662
+      result = build_pointer_type (result);
 
3663
+      rs6000_parm_needs_stack (args_so_far, result);
 
3664
+    }
 
3665
 
 
3666
+  if (incoming)
 
3667
+    {
 
3668
+      tree parm;
 
3669
+
 
3670
+      for (parm = DECL_ARGUMENTS (fun);
 
3671
+          parm && parm != void_list_node;
 
3672
+          parm = TREE_CHAIN (parm))
 
3673
+       if (rs6000_parm_needs_stack (args_so_far, TREE_TYPE (parm)))
 
3674
+         return true;
 
3675
+    }
 
3676
+  else
 
3677
+    {
 
3678
+      function_args_iterator args_iter;
 
3679
+      tree arg_type;
 
3680
+
 
3681
+      FOREACH_FUNCTION_ARGS (fntype, arg_type, args_iter)
 
3682
+       if (rs6000_parm_needs_stack (args_so_far, arg_type))
 
3683
+         return true;
 
3684
+    }
 
3685
+
 
3686
   return false;
 
3687
 }
 
3688
 
 
3689
@@ -10537,7 +10666,7 @@
 
3690
    all parameters in registers.  */
 
3691
 
 
3692
 int
 
3693
-rs6000_reg_parm_stack_space (tree fun)
 
3694
+rs6000_reg_parm_stack_space (tree fun, bool incoming)
 
3695
 {
 
3696
   int reg_parm_stack_space;
 
3697
 
 
3698
@@ -10555,7 +10684,7 @@
 
3699
     case ABI_ELFv2:
 
3700
       /* ??? Recomputing this every time is a bit expensive.  Is there
 
3701
         a place to cache this information?  */
 
3702
-      if (rs6000_function_parms_need_stack (fun))
 
3703
+      if (rs6000_function_parms_need_stack (fun, incoming))
 
3704
        reg_parm_stack_space = TARGET_64BIT ? 64 : 32;
 
3705
       else
 
3706
        reg_parm_stack_space = 0;
 
3707
@@ -13544,11 +13673,15 @@
 
3708
   else if ((fnmask & (RS6000_BTM_DFP | RS6000_BTM_P8_VECTOR))
 
3709
           == (RS6000_BTM_DFP | RS6000_BTM_P8_VECTOR))
 
3710
     error ("Builtin function %s requires the -mhard-dfp and"
 
3711
-          "-mpower8-vector options", name);
 
3712
+          " -mpower8-vector options", name);
 
3713
   else if ((fnmask & RS6000_BTM_DFP) != 0)
 
3714
     error ("Builtin function %s requires the -mhard-dfp option", name);
 
3715
   else if ((fnmask & RS6000_BTM_P8_VECTOR) != 0)
 
3716
     error ("Builtin function %s requires the -mpower8-vector option", name);
 
3717
+  else if ((fnmask & (RS6000_BTM_HARD_FLOAT | RS6000_BTM_LDBL128))
 
3718
+          == (RS6000_BTM_HARD_FLOAT | RS6000_BTM_LDBL128))
 
3719
+    error ("Builtin function %s requires the -mhard-float and"
 
3720
+          " -mlong-double-128 options", name);
 
3721
   else if ((fnmask & RS6000_BTM_HARD_FLOAT) != 0)
 
3722
     error ("Builtin function %s requires the -mhard-float option", name);
 
3723
   else
 
3724
@@ -31413,6 +31546,7 @@
 
3725
   { "htm",              RS6000_BTM_HTM,        false, false },
 
3726
   { "hard-dfp",                 RS6000_BTM_DFP,        false, false },
 
3727
   { "hard-float",       RS6000_BTM_HARD_FLOAT, false, false },
 
3728
+  { "long-double-128",  RS6000_BTM_LDBL128,    false, false },
 
3729
 };
 
3730
 
 
3731
 /* Option variables that we want to support inside attribute((target)) and
 
3732
Index: gcc/config/rs6000/vsx.md
 
3733
===================================================================
 
3734
--- a/src/gcc/config/rs6000/vsx.md      (.../tags/gcc_4_8_3_release)
 
3735
+++ b/src/gcc/config/rs6000/vsx.md      (.../branches/gcc-4_8-branch)
 
3736
@@ -24,6 +24,13 @@
 
3737
 ;; Iterator for the 2 64-bit vector types
 
3738
 (define_mode_iterator VSX_D [V2DF V2DI])
 
3739
 
 
3740
+;; Iterator for the 2 64-bit vector types + 128-bit types that are loaded with
 
3741
+;; lxvd2x to properly handle swapping words on little endian
 
3742
+(define_mode_iterator VSX_LE [V2DF
 
3743
+                             V2DI
 
3744
+                             V1TI
 
3745
+                             (TI       "VECTOR_MEM_VSX_P (TImode)")])
 
3746
+
 
3747
 ;; Iterator for the 2 32-bit vector types
 
3748
 (define_mode_iterator VSX_W [V4SF V4SI])
 
3749
 
 
3750
@@ -228,8 +235,8 @@
 
3751
 ;; The patterns for LE permuted loads and stores come before the general
 
3752
 ;; VSX moves so they match first.
 
3753
 (define_insn_and_split "*vsx_le_perm_load_<mode>"
 
3754
-  [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa")
 
3755
-        (match_operand:VSX_D 1 "memory_operand" "Z"))]
 
3756
+  [(set (match_operand:VSX_LE 0 "vsx_register_operand" "=wa")
 
3757
+        (match_operand:VSX_LE 1 "memory_operand" "Z"))]
 
3758
   "!BYTES_BIG_ENDIAN && TARGET_VSX"
 
3759
   "#"
 
3760
   "!BYTES_BIG_ENDIAN && TARGET_VSX"
 
3761
@@ -342,8 +349,8 @@
 
3762
    (set_attr "length" "8")])
 
3763
 
 
3764
 (define_insn "*vsx_le_perm_store_<mode>"
 
3765
-  [(set (match_operand:VSX_D 0 "memory_operand" "=Z")
 
3766
-        (match_operand:VSX_D 1 "vsx_register_operand" "+wa"))]
 
3767
+  [(set (match_operand:VSX_LE 0 "memory_operand" "=Z")
 
3768
+        (match_operand:VSX_LE 1 "vsx_register_operand" "+wa"))]
 
3769
   "!BYTES_BIG_ENDIAN && TARGET_VSX"
 
3770
   "#"
 
3771
   [(set_attr "type" "vecstore")
 
3772
@@ -350,8 +357,8 @@
 
3773
    (set_attr "length" "12")])
 
3774
 
 
3775
 (define_split
 
3776
-  [(set (match_operand:VSX_D 0 "memory_operand" "")
 
3777
-        (match_operand:VSX_D 1 "vsx_register_operand" ""))]
 
3778
+  [(set (match_operand:VSX_LE 0 "memory_operand" "")
 
3779
+        (match_operand:VSX_LE 1 "vsx_register_operand" ""))]
 
3780
   "!BYTES_BIG_ENDIAN && TARGET_VSX && !reload_completed"
 
3781
   [(set (match_dup 2)
 
3782
         (vec_select:<MODE>
 
3783
@@ -369,8 +376,8 @@
 
3784
 ;; The post-reload split requires that we re-permute the source
 
3785
 ;; register in case it is still live.
 
3786
 (define_split
 
3787
-  [(set (match_operand:VSX_D 0 "memory_operand" "")
 
3788
-        (match_operand:VSX_D 1 "vsx_register_operand" ""))]
 
3789
+  [(set (match_operand:VSX_LE 0 "memory_operand" "")
 
3790
+        (match_operand:VSX_LE 1 "vsx_register_operand" ""))]
 
3791
   "!BYTES_BIG_ENDIAN && TARGET_VSX && reload_completed"
 
3792
   [(set (match_dup 1)
 
3793
         (vec_select:<MODE>
 
3794
@@ -1352,9 +1359,9 @@
 
3795
 ;; xxpermdi for little endian loads and stores.  We need several of
 
3796
 ;; these since the form of the PARALLEL differs by mode.
 
3797
 (define_insn "*vsx_xxpermdi2_le_<mode>"
 
3798
-  [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa")
 
3799
-        (vec_select:VSX_D
 
3800
-          (match_operand:VSX_D 1 "vsx_register_operand" "wa")
 
3801
+  [(set (match_operand:VSX_LE 0 "vsx_register_operand" "=wa")
 
3802
+        (vec_select:VSX_LE
 
3803
+          (match_operand:VSX_LE 1 "vsx_register_operand" "wa")
 
3804
           (parallel [(const_int 1) (const_int 0)])))]
 
3805
   "!BYTES_BIG_ENDIAN && VECTOR_MEM_VSX_P (<MODE>mode)"
 
3806
   "xxpermdi %x0,%x1,%x1,2"
 
3807
@@ -1401,9 +1408,9 @@
 
3808
 ;; lxvd2x for little endian loads.  We need several of
 
3809
 ;; these since the form of the PARALLEL differs by mode.
 
3810
 (define_insn "*vsx_lxvd2x2_le_<mode>"
 
3811
-  [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa")
 
3812
-        (vec_select:VSX_D
 
3813
-          (match_operand:VSX_D 1 "memory_operand" "Z")
 
3814
+  [(set (match_operand:VSX_LE 0 "vsx_register_operand" "=wa")
 
3815
+        (vec_select:VSX_LE
 
3816
+          (match_operand:VSX_LE 1 "memory_operand" "Z")
 
3817
           (parallel [(const_int 1) (const_int 0)])))]
 
3818
   "!BYTES_BIG_ENDIAN && VECTOR_MEM_VSX_P (<MODE>mode)"
 
3819
   "lxvd2x %x0,%y1"
 
3820
@@ -1450,9 +1457,9 @@
 
3821
 ;; stxvd2x for little endian stores.  We need several of
 
3822
 ;; these since the form of the PARALLEL differs by mode.
 
3823
 (define_insn "*vsx_stxvd2x2_le_<mode>"
 
3824
-  [(set (match_operand:VSX_D 0 "memory_operand" "=Z")
 
3825
-        (vec_select:VSX_D
 
3826
-          (match_operand:VSX_D 1 "vsx_register_operand" "wa")
 
3827
+  [(set (match_operand:VSX_LE 0 "memory_operand" "=Z")
 
3828
+        (vec_select:VSX_LE
 
3829
+          (match_operand:VSX_LE 1 "vsx_register_operand" "wa")
 
3830
           (parallel [(const_int 1) (const_int 0)])))]
 
3831
   "!BYTES_BIG_ENDIAN && VECTOR_MEM_VSX_P (<MODE>mode)"
 
3832
   "stxvd2x %x1,%y0"
 
3833
@@ -1606,7 +1613,7 @@
 
3834
     {
 
3835
       if (GET_CODE (op3) == SCRATCH)
 
3836
        op3 = gen_reg_rtx (V4SFmode);
 
3837
-      emit_insn (gen_vsx_xxsldwi_v4sf (op3, op1, op1, op2));
 
3838
+      emit_insn (gen_vsx_xxsldwi_v4sf (op3, op1, op1, GEN_INT (ele)));
 
3839
       tmp = op3;
 
3840
     }
 
3841
   emit_insn (gen_vsx_xscvspdp_scalar2 (op0, tmp));
 
3842
Index: gcc/config/rs6000/rs6000.h
 
3843
===================================================================
 
3844
--- a/src/gcc/config/rs6000/rs6000.h    (.../tags/gcc_4_8_3_release)
 
3845
+++ b/src/gcc/config/rs6000/rs6000.h    (.../branches/gcc-4_8-branch)
 
3846
@@ -1593,8 +1593,15 @@
 
3847
 /* Define this if stack space is still allocated for a parameter passed
 
3848
    in a register.  The value is the number of bytes allocated to this
 
3849
    area.  */
 
3850
-#define REG_PARM_STACK_SPACE(FNDECL) rs6000_reg_parm_stack_space((FNDECL))
 
3851
+#define REG_PARM_STACK_SPACE(FNDECL) \
 
3852
+  rs6000_reg_parm_stack_space ((FNDECL), false)
 
3853
 
 
3854
+/* Define this macro if space guaranteed when compiling a function body
 
3855
+   is different to space required when making a call, a situation that
 
3856
+   can arise with K&R style function definitions.  */
 
3857
+#define INCOMING_REG_PARM_STACK_SPACE(FNDECL) \
 
3858
+  rs6000_reg_parm_stack_space ((FNDECL), true)
 
3859
+
 
3860
 /* Define this if the above stack space is to be considered part of the
 
3861
    space allocated by the caller.  */
 
3862
 #define OUTGOING_REG_PARM_STACK_SPACE(FNTYPE) 1
 
3863
@@ -2483,8 +2490,8 @@
 
3864
 #define RS6000_BTC_SAT         RS6000_BTC_MISC /* saturate sets VSCR.  */
 
3865
 
 
3866
 /* Builtin targets.  For now, we reuse the masks for those options that are in
 
3867
-   target flags, and pick two random bits for SPE and paired which aren't in
 
3868
-   target_flags.  */
 
3869
+   target flags, and pick three random bits for SPE, paired and ldbl128 which
 
3870
+   aren't in target_flags.  */
 
3871
 #define RS6000_BTM_ALWAYS      0               /* Always enabled.  */
 
3872
 #define RS6000_BTM_ALTIVEC     MASK_ALTIVEC    /* VMX/altivec vectors.  */
 
3873
 #define RS6000_BTM_VSX         MASK_VSX        /* VSX (vector/scalar).  */
 
3874
@@ -2501,6 +2508,7 @@
 
3875
 #define RS6000_BTM_CELL                MASK_FPRND      /* Target is cell powerpc.  */
 
3876
 #define RS6000_BTM_DFP         MASK_DFP        /* Decimal floating point.  */
 
3877
 #define RS6000_BTM_HARD_FLOAT  MASK_SOFT_FLOAT /* Hardware floating point.  */
 
3878
+#define RS6000_BTM_LDBL128     MASK_MULTIPLE   /* 128-bit long double.  */
 
3879
 
 
3880
 #define RS6000_BTM_COMMON      (RS6000_BTM_ALTIVEC                     \
 
3881
                                 | RS6000_BTM_VSX                       \
 
3882
@@ -2514,7 +2522,8 @@
 
3883
                                 | RS6000_BTM_POPCNTD                   \
 
3884
                                 | RS6000_BTM_CELL                      \
 
3885
                                 | RS6000_BTM_DFP                       \
 
3886
-                                | RS6000_BTM_HARD_FLOAT)
 
3887
+                                | RS6000_BTM_HARD_FLOAT                \
 
3888
+                                | RS6000_BTM_LDBL128)
 
3889
 
 
3890
 /* Define builtin enum index.  */
 
3891
 
 
3892
Index: gcc/config/rs6000/rs6000.md
 
3893
===================================================================
 
3894
--- a/src/gcc/config/rs6000/rs6000.md   (.../tags/gcc_4_8_3_release)
 
3895
+++ b/src/gcc/config/rs6000/rs6000.md   (.../branches/gcc-4_8-branch)
 
3896
@@ -737,7 +737,7 @@
 
3897
 
 
3898
 (define_insn "*extendsidi2_lfiwax"
 
3899
   [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r,??wm,!wl,!wu")
 
3900
-       (sign_extend:DI (match_operand:SI 1 "lwa_operand" "m,r,r,Z,Z")))]
 
3901
+       (sign_extend:DI (match_operand:SI 1 "lwa_operand" "Y,r,r,Z,Z")))]
 
3902
   "TARGET_POWERPC64 && TARGET_LFIWAX"
 
3903
   "@
 
3904
    lwa%U1%X1 %0,%1
 
3905
@@ -760,7 +760,7 @@
 
3906
 
 
3907
 (define_insn "*extendsidi2_nocell"
 
3908
   [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
 
3909
-       (sign_extend:DI (match_operand:SI 1 "lwa_operand" "m,r")))]
 
3910
+       (sign_extend:DI (match_operand:SI 1 "lwa_operand" "Y,r")))]
 
3911
   "TARGET_POWERPC64 && rs6000_gen_cell_microcode && !TARGET_LFIWAX"
 
3912
   "@
 
3913
    lwa%U1%X1 %0,%1
 
3914
@@ -15847,26 +15847,6 @@
 
3915
   ""
 
3916
   "")
 
3917
 
 
3918
-;; The Advance Toolchain 7.0-3 added private builtins: __builtin_longdouble_dw0
 
3919
-;; and __builtin_longdouble_dw1 to optimize glibc.  Add support for these
 
3920
-;; builtins here.
 
3921
-
 
3922
-(define_expand "unpacktf_0"
 
3923
-  [(set (match_operand:DF 0 "nonimmediate_operand" "")
 
3924
-       (unspec:DF [(match_operand:TF 1 "register_operand" "")
 
3925
-                   (const_int 0)]
 
3926
-        UNSPEC_UNPACK_128BIT))]
 
3927
-  ""
 
3928
-  "")
 
3929
-
 
3930
-(define_expand "unpacktf_1"
 
3931
-  [(set (match_operand:DF 0 "nonimmediate_operand" "")
 
3932
-       (unspec:DF [(match_operand:TF 1 "register_operand" "")
 
3933
-                   (const_int 1)]
 
3934
-        UNSPEC_UNPACK_128BIT))]
 
3935
-  ""
 
3936
-  "")
 
3937
-
 
3938
 (define_insn_and_split "unpack<mode>_dm"
 
3939
   [(set (match_operand:<FP128_64> 0 "nonimmediate_operand" "=d,m,d,r,m")
 
3940
        (unspec:<FP128_64>
 
3941
Index: gcc/config/rs6000/sysv4.h
 
3942
===================================================================
 
3943
--- a/src/gcc/config/rs6000/sysv4.h     (.../tags/gcc_4_8_3_release)
 
3944
+++ b/src/gcc/config/rs6000/sysv4.h     (.../branches/gcc-4_8-branch)
 
3945
@@ -292,7 +292,7 @@
 
3946
 /* An expression for the alignment of a structure field FIELD if the
 
3947
    alignment computed in the usual way is COMPUTED.  */
 
3948
 #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED)                                  \
 
3949
-       ((TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE)     \
 
3950
+       (rs6000_special_adjust_field_align_p ((FIELD), (COMPUTED))            \
 
3951
         ? 128 : COMPUTED)
 
3952
 
 
3953
 #undef  BIGGEST_FIELD_ALIGNMENT
 
3954
@@ -949,3 +949,27 @@
 
3955
 #define TARGET_USES_SYSV4_OPT 1
 
3956
 
 
3957
 #undef DBX_REGISTER_NUMBER
 
3958
+
 
3959
+/* Link -lasan early on the command line.  For -static-libasan, don't link
 
3960
+   it for -shared link, the executable should be compiled with -static-libasan
 
3961
+   in that case, and for executable link link with --{,no-}whole-archive around
 
3962
+   it to force everything into the executable.  And similarly for -ltsan.  */
 
3963
+#if defined(HAVE_LD_STATIC_DYNAMIC)
 
3964
+#undef LIBASAN_EARLY_SPEC
 
3965
+#define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \
 
3966
+  "%{static-libasan:%{!shared:" \
 
3967
+  LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \
 
3968
+  LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}"
 
3969
+#undef LIBTSAN_EARLY_SPEC
 
3970
+#define LIBTSAN_EARLY_SPEC "%{static-libtsan:%{!shared:" \
 
3971
+  LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \
 
3972
+  LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan}"
 
3973
+#endif
 
3974
+
 
3975
+/* Additional libraries needed by -static-libasan.  */
 
3976
+#undef STATIC_LIBASAN_LIBS
 
3977
+#define STATIC_LIBASAN_LIBS "-ldl -lpthread"
 
3978
+
 
3979
+/* Additional libraries needed by -static-libtsan.  */
 
3980
+#undef STATIC_LIBTSAN_LIBS
 
3981
+#define STATIC_LIBTSAN_LIBS "-ldl -lpthread"
 
3982
Index: gcc/config/arm/arm.c
 
3983
===================================================================
 
3984
--- a/src/gcc/config/arm/arm.c  (.../tags/gcc_4_8_3_release)
 
3985
+++ b/src/gcc/config/arm/arm.c  (.../branches/gcc-4_8-branch)
 
3986
@@ -24476,9 +24476,13 @@
 
3987
       fputs (":\n", file);
 
3988
       if (flag_pic)
 
3989
        {
 
3990
-         /* Output ".word .LTHUNKn-7-.LTHUNKPCn".  */
 
3991
+         /* Output ".word .LTHUNKn-[3,7]-.LTHUNKPCn".  */
 
3992
          rtx tem = XEXP (DECL_RTL (function), 0);
 
3993
-         tem = gen_rtx_PLUS (GET_MODE (tem), tem, GEN_INT (-7));
 
3994
+         /* For TARGET_THUMB1_ONLY the thunk is in Thumb mode, so the PC
 
3995
+            pipeline offset is four rather than eight.  Adjust the offset
 
3996
+            accordingly.  */
 
3997
+         tem = plus_constant (GET_MODE (tem), tem,
 
3998
+                              TARGET_THUMB1_ONLY ? -3 : -7);
 
3999
          tem = gen_rtx_MINUS (GET_MODE (tem),
 
4000
                               tem,
 
4001
                               gen_rtx_SYMBOL_REF (Pmode,
 
4002
Index: gcc/config/arm/arm.md
 
4003
===================================================================
 
4004
--- a/src/gcc/config/arm/arm.md (.../tags/gcc_4_8_3_release)
 
4005
+++ b/src/gcc/config/arm/arm.md (.../branches/gcc-4_8-branch)
 
4006
@@ -7630,12 +7630,13 @@
 
4007
 
 
4008
 (define_insn "*arm_cmpdi_unsigned"
 
4009
   [(set (reg:CC_CZ CC_REGNUM)
 
4010
-       (compare:CC_CZ (match_operand:DI 0 "s_register_operand" "r")
 
4011
-                      (match_operand:DI 1 "arm_di_operand"     "rDi")))]
 
4012
+       (compare:CC_CZ (match_operand:DI 0 "s_register_operand" "r,r")
 
4013
+                      (match_operand:DI 1 "arm_di_operand"     "rDi,rDi")))]
 
4014
   "TARGET_32BIT"
 
4015
   "cmp\\t%R0, %R1\;it eq\;cmpeq\\t%Q0, %Q1"
 
4016
   [(set_attr "conds" "set")
 
4017
-   (set_attr "length" "8")]
 
4018
+   (set_attr "arch" "a,t2")
 
4019
+   (set_attr "length" "8,10")]
 
4020
 )
 
4021
 
 
4022
 (define_insn "*arm_cmpdi_zero"
 
4023
Index: gcc/config/arm/t-rtems-eabi
 
4024
===================================================================
 
4025
--- a/src/gcc/config/arm/t-rtems-eabi   (.../tags/gcc_4_8_3_release)
 
4026
+++ b/src/gcc/config/arm/t-rtems-eabi   (.../branches/gcc-4_8-branch)
 
4027
@@ -1,47 +1,167 @@
 
4028
 # Custom RTEMS EABI multilibs
 
4029
 
 
4030
-MULTILIB_OPTIONS  = mthumb march=armv6-m/march=armv7-a/march=armv7-r/march=armv7-m mfpu=neon mfloat-abi=hard
 
4031
-MULTILIB_DIRNAMES = thumb armv6-m armv7-a armv7-r armv7-m neon hard
 
4032
+MULTILIB_OPTIONS  = mbig-endian mthumb march=armv6-m/march=armv7-a/march=armv7-r/march=armv7-m mfpu=neon/mfpu=vfpv3-d16/mfpu=fpv4-sp-d16 mfloat-abi=hard
 
4033
+MULTILIB_DIRNAMES = eb thumb armv6-m armv7-a armv7-r armv7-m neon vfpv3-d16 fpv4-sp-d16 hard
 
4034
 
 
4035
 # Enumeration of multilibs
 
4036
 
 
4037
 MULTILIB_EXCEPTIONS =
 
4038
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv6-m/mfpu=neon/mfloat-abi=hard
 
4039
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv6-m/mfpu=neon
 
4040
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv6-m/mfpu=vfpv3-d16/mfloat-abi=hard
 
4041
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv6-m/mfpu=vfpv3-d16
 
4042
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv6-m/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4043
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv6-m/mfpu=fpv4-sp-d16
 
4044
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv6-m/mfloat-abi=hard
 
4045
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv6-m
 
4046
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-a/mfpu=neon/mfloat-abi=hard
 
4047
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-a/mfpu=neon
 
4048
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-a/mfpu=vfpv3-d16/mfloat-abi=hard
 
4049
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-a/mfpu=vfpv3-d16
 
4050
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-a/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4051
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-a/mfpu=fpv4-sp-d16
 
4052
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-a/mfloat-abi=hard
 
4053
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-a
 
4054
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-r/mfpu=neon/mfloat-abi=hard
 
4055
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-r/mfpu=neon
 
4056
+# MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-r/mfpu=vfpv3-d16/mfloat-abi=hard
 
4057
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-r/mfpu=vfpv3-d16
 
4058
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-r/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4059
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-r/mfpu=fpv4-sp-d16
 
4060
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-r/mfloat-abi=hard
 
4061
+# MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-r
 
4062
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-m/mfpu=neon/mfloat-abi=hard
 
4063
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-m/mfpu=neon
 
4064
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-m/mfpu=vfpv3-d16/mfloat-abi=hard
 
4065
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-m/mfpu=vfpv3-d16
 
4066
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-m/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4067
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-m/mfpu=fpv4-sp-d16
 
4068
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-m/mfloat-abi=hard
 
4069
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/march=armv7-m
 
4070
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/mfpu=neon/mfloat-abi=hard
 
4071
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/mfpu=neon
 
4072
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/mfpu=vfpv3-d16/mfloat-abi=hard
 
4073
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/mfpu=vfpv3-d16
 
4074
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4075
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/mfpu=fpv4-sp-d16
 
4076
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb/mfloat-abi=hard
 
4077
+MULTILIB_EXCEPTIONS += mbig-endian/mthumb
 
4078
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv6-m/mfpu=neon/mfloat-abi=hard
 
4079
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv6-m/mfpu=neon
 
4080
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv6-m/mfpu=vfpv3-d16/mfloat-abi=hard
 
4081
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv6-m/mfpu=vfpv3-d16
 
4082
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv6-m/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4083
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv6-m/mfpu=fpv4-sp-d16
 
4084
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv6-m/mfloat-abi=hard
 
4085
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv6-m
 
4086
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-a/mfpu=neon/mfloat-abi=hard
 
4087
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-a/mfpu=neon
 
4088
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-a/mfpu=vfpv3-d16/mfloat-abi=hard
 
4089
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-a/mfpu=vfpv3-d16
 
4090
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-a/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4091
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-a/mfpu=fpv4-sp-d16
 
4092
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-a/mfloat-abi=hard
 
4093
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-a
 
4094
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-r/mfpu=neon/mfloat-abi=hard
 
4095
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-r/mfpu=neon
 
4096
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-r/mfpu=vfpv3-d16/mfloat-abi=hard
 
4097
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-r/mfpu=vfpv3-d16
 
4098
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-r/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4099
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-r/mfpu=fpv4-sp-d16
 
4100
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-r/mfloat-abi=hard
 
4101
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-r
 
4102
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-m/mfpu=neon/mfloat-abi=hard
 
4103
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-m/mfpu=neon
 
4104
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-m/mfpu=vfpv3-d16/mfloat-abi=hard
 
4105
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-m/mfpu=vfpv3-d16
 
4106
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-m/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4107
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-m/mfpu=fpv4-sp-d16
 
4108
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-m/mfloat-abi=hard
 
4109
+MULTILIB_EXCEPTIONS += mbig-endian/march=armv7-m
 
4110
+MULTILIB_EXCEPTIONS += mbig-endian/mfpu=neon/mfloat-abi=hard
 
4111
+MULTILIB_EXCEPTIONS += mbig-endian/mfpu=neon
 
4112
+MULTILIB_EXCEPTIONS += mbig-endian/mfpu=vfpv3-d16/mfloat-abi=hard
 
4113
+MULTILIB_EXCEPTIONS += mbig-endian/mfpu=vfpv3-d16
 
4114
+MULTILIB_EXCEPTIONS += mbig-endian/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4115
+MULTILIB_EXCEPTIONS += mbig-endian/mfpu=fpv4-sp-d16
 
4116
+MULTILIB_EXCEPTIONS += mbig-endian/mfloat-abi=hard
 
4117
+MULTILIB_EXCEPTIONS += mbig-endian
 
4118
 MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfpu=neon/mfloat-abi=hard
 
4119
 MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfpu=neon
 
4120
+MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfpu=vfpv3-d16/mfloat-abi=hard
 
4121
+MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfpu=vfpv3-d16
 
4122
+MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4123
+MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfpu=fpv4-sp-d16
 
4124
 MULTILIB_EXCEPTIONS += mthumb/march=armv6-m/mfloat-abi=hard
 
4125
 # MULTILIB_EXCEPTIONS += mthumb/march=armv6-m
 
4126
 # MULTILIB_EXCEPTIONS += mthumb/march=armv7-a/mfpu=neon/mfloat-abi=hard
 
4127
 MULTILIB_EXCEPTIONS += mthumb/march=armv7-a/mfpu=neon
 
4128
+MULTILIB_EXCEPTIONS += mthumb/march=armv7-a/mfpu=vfpv3-d16/mfloat-abi=hard
 
4129
+MULTILIB_EXCEPTIONS += mthumb/march=armv7-a/mfpu=vfpv3-d16
 
4130
+MULTILIB_EXCEPTIONS += mthumb/march=armv7-a/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4131
+MULTILIB_EXCEPTIONS += mthumb/march=armv7-a/mfpu=fpv4-sp-d16
 
4132
 MULTILIB_EXCEPTIONS += mthumb/march=armv7-a/mfloat-abi=hard
 
4133
 # MULTILIB_EXCEPTIONS += mthumb/march=armv7-a
 
4134
 MULTILIB_EXCEPTIONS += mthumb/march=armv7-r/mfpu=neon/mfloat-abi=hard
 
4135
 MULTILIB_EXCEPTIONS += mthumb/march=armv7-r/mfpu=neon
 
4136
+# MULTILIB_EXCEPTIONS += mthumb/march=armv7-r/mfpu=vfpv3-d16/mfloat-abi=hard
 
4137
+MULTILIB_EXCEPTIONS += mthumb/march=armv7-r/mfpu=vfpv3-d16
 
4138
+MULTILIB_EXCEPTIONS += mthumb/march=armv7-r/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4139
+MULTILIB_EXCEPTIONS += mthumb/march=armv7-r/mfpu=fpv4-sp-d16
 
4140
 MULTILIB_EXCEPTIONS += mthumb/march=armv7-r/mfloat-abi=hard
 
4141
 # MULTILIB_EXCEPTIONS += mthumb/march=armv7-r
 
4142
 MULTILIB_EXCEPTIONS += mthumb/march=armv7-m/mfpu=neon/mfloat-abi=hard
 
4143
 MULTILIB_EXCEPTIONS += mthumb/march=armv7-m/mfpu=neon
 
4144
+MULTILIB_EXCEPTIONS += mthumb/march=armv7-m/mfpu=vfpv3-d16/mfloat-abi=hard
 
4145
+MULTILIB_EXCEPTIONS += mthumb/march=armv7-m/mfpu=vfpv3-d16
 
4146
+# MULTILIB_EXCEPTIONS += mthumb/march=armv7-m/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4147
+MULTILIB_EXCEPTIONS += mthumb/march=armv7-m/mfpu=fpv4-sp-d16
 
4148
 MULTILIB_EXCEPTIONS += mthumb/march=armv7-m/mfloat-abi=hard
 
4149
 # MULTILIB_EXCEPTIONS += mthumb/march=armv7-m
 
4150
 MULTILIB_EXCEPTIONS += mthumb/mfpu=neon/mfloat-abi=hard
 
4151
 MULTILIB_EXCEPTIONS += mthumb/mfpu=neon
 
4152
+MULTILIB_EXCEPTIONS += mthumb/mfpu=vfpv3-d16/mfloat-abi=hard
 
4153
+MULTILIB_EXCEPTIONS += mthumb/mfpu=vfpv3-d16
 
4154
+MULTILIB_EXCEPTIONS += mthumb/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4155
+MULTILIB_EXCEPTIONS += mthumb/mfpu=fpv4-sp-d16
 
4156
 MULTILIB_EXCEPTIONS += mthumb/mfloat-abi=hard
 
4157
 # MULTILIB_EXCEPTIONS += mthumb
 
4158
 MULTILIB_EXCEPTIONS += march=armv6-m/mfpu=neon/mfloat-abi=hard
 
4159
 MULTILIB_EXCEPTIONS += march=armv6-m/mfpu=neon
 
4160
+MULTILIB_EXCEPTIONS += march=armv6-m/mfpu=vfpv3-d16/mfloat-abi=hard
 
4161
+MULTILIB_EXCEPTIONS += march=armv6-m/mfpu=vfpv3-d16
 
4162
+MULTILIB_EXCEPTIONS += march=armv6-m/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4163
+MULTILIB_EXCEPTIONS += march=armv6-m/mfpu=fpv4-sp-d16
 
4164
 MULTILIB_EXCEPTIONS += march=armv6-m/mfloat-abi=hard
 
4165
 MULTILIB_EXCEPTIONS += march=armv6-m
 
4166
 MULTILIB_EXCEPTIONS += march=armv7-a/mfpu=neon/mfloat-abi=hard
 
4167
 MULTILIB_EXCEPTIONS += march=armv7-a/mfpu=neon
 
4168
+MULTILIB_EXCEPTIONS += march=armv7-a/mfpu=vfpv3-d16/mfloat-abi=hard
 
4169
+MULTILIB_EXCEPTIONS += march=armv7-a/mfpu=vfpv3-d16
 
4170
+MULTILIB_EXCEPTIONS += march=armv7-a/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4171
+MULTILIB_EXCEPTIONS += march=armv7-a/mfpu=fpv4-sp-d16
 
4172
 MULTILIB_EXCEPTIONS += march=armv7-a/mfloat-abi=hard
 
4173
 MULTILIB_EXCEPTIONS += march=armv7-a
 
4174
 MULTILIB_EXCEPTIONS += march=armv7-r/mfpu=neon/mfloat-abi=hard
 
4175
 MULTILIB_EXCEPTIONS += march=armv7-r/mfpu=neon
 
4176
+MULTILIB_EXCEPTIONS += march=armv7-r/mfpu=vfpv3-d16/mfloat-abi=hard
 
4177
+MULTILIB_EXCEPTIONS += march=armv7-r/mfpu=vfpv3-d16
 
4178
+MULTILIB_EXCEPTIONS += march=armv7-r/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4179
+MULTILIB_EXCEPTIONS += march=armv7-r/mfpu=fpv4-sp-d16
 
4180
 MULTILIB_EXCEPTIONS += march=armv7-r/mfloat-abi=hard
 
4181
 MULTILIB_EXCEPTIONS += march=armv7-r
 
4182
 MULTILIB_EXCEPTIONS += march=armv7-m/mfpu=neon/mfloat-abi=hard
 
4183
 MULTILIB_EXCEPTIONS += march=armv7-m/mfpu=neon
 
4184
+MULTILIB_EXCEPTIONS += march=armv7-m/mfpu=vfpv3-d16/mfloat-abi=hard
 
4185
+MULTILIB_EXCEPTIONS += march=armv7-m/mfpu=vfpv3-d16
 
4186
+MULTILIB_EXCEPTIONS += march=armv7-m/mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4187
+MULTILIB_EXCEPTIONS += march=armv7-m/mfpu=fpv4-sp-d16
 
4188
 MULTILIB_EXCEPTIONS += march=armv7-m/mfloat-abi=hard
 
4189
 MULTILIB_EXCEPTIONS += march=armv7-m
 
4190
 MULTILIB_EXCEPTIONS += mfpu=neon/mfloat-abi=hard
 
4191
 MULTILIB_EXCEPTIONS += mfpu=neon
 
4192
+MULTILIB_EXCEPTIONS += mfpu=vfpv3-d16/mfloat-abi=hard
 
4193
+MULTILIB_EXCEPTIONS += mfpu=vfpv3-d16
 
4194
+MULTILIB_EXCEPTIONS += mfpu=fpv4-sp-d16/mfloat-abi=hard
 
4195
+MULTILIB_EXCEPTIONS += mfpu=fpv4-sp-d16
 
4196
 MULTILIB_EXCEPTIONS += mfloat-abi=hard
 
4197
Index: libobjc/encoding.c
 
4198
===================================================================
 
4199
--- a/src/libobjc/encoding.c    (.../tags/gcc_4_8_3_release)
 
4200
+++ b/src/libobjc/encoding.c    (.../branches/gcc-4_8-branch)
 
4201
@@ -192,6 +192,8 @@
 
4202
    ? MAX (MAX (COMPUTED, SPECIFIED), 64)                               \
 
4203
    : MAX (COMPUTED, SPECIFIED));})
 
4204
 
 
4205
+#define rs6000_special_adjust_field_align_p(FIELD, COMPUTED) \
 
4206
+ (TARGET_ALTIVEC && TREE_CODE (TREE_TYPE (FIELD)) == VECTOR_TYPE)
 
4207
 
 
4208
 /* Skip a variable name, enclosed in quotes (").  */
 
4209
 static inline
 
4210
Index: libobjc/ChangeLog
 
4211
===================================================================
 
4212
--- a/src/libobjc/ChangeLog     (.../tags/gcc_4_8_3_release)
 
4213
+++ b/src/libobjc/ChangeLog     (.../branches/gcc-4_8-branch)
 
4214
@@ -1,3 +1,16 @@
 
4215
+2014-07-27  Ulrich Weigand  <uweigand@de.ibm.com>
 
4216
+
 
4217
+       PR libobjc/61920
 
4218
+       * encoding.c (rs6000_special_adjust_field_align_p): Use definition
 
4219
+       that matches the 4.8 branch ABI.
 
4220
+
 
4221
+2014-07-27  Alan Modra  <amodra@gmail.com>
 
4222
+           Matthias Klose  <doko@ubuntu.com>
 
4223
+
 
4224
+       PR libobjc/61920
 
4225
+
 
4226
+       * encoding.c: Define rs6000_special_adjust_field_align_p.
 
4227
+
 
4228
 2014-05-22  Release Manager
 
4229
 
 
4230
        * GCC 4.8.3 released.
 
4231
Index: libgfortran/intrinsics/ctime.c
 
4232
===================================================================
 
4233
--- a/src/libgfortran/intrinsics/ctime.c        (.../tags/gcc_4_8_3_release)
 
4234
+++ b/src/libgfortran/intrinsics/ctime.c        (.../branches/gcc-4_8-branch)
 
4235
@@ -31,31 +31,53 @@
 
4236
 #include <string.h>
 
4237
 
 
4238
 
 
4239
-/* strftime-like function that fills a C string with %c format which
 
4240
-   is identical to ctime in the default locale. As ctime and ctime_r
 
4241
-   are poorly specified and their usage not recommended, the
 
4242
-   implementation instead uses strftime.  */
 
4243
+/* Maximum space a ctime-like string might need. A "normal" ctime
 
4244
+   string is 26 bytes, and in our case 24 bytes as we don't include
 
4245
+   the trailing newline and null. However, the longest possible year
 
4246
+   number is -2,147,481,748 (1900 - 2,147,483,648, since tm_year is a
 
4247
+   32-bit signed integer) so an extra 7 bytes are needed. */
 
4248
+#define CTIME_BUFSZ 31
 
4249
 
 
4250
-static size_t
 
4251
-strctime (char *s, size_t max, const time_t *timep)
 
4252
+
 
4253
+/* Thread-safe ctime-like function that fills a Fortran
 
4254
+   string. ctime_r is a portability headache and marked as obsolescent
 
4255
+   in POSIX 2008, which recommends strftime in its place. However,
 
4256
+   strftime(..., "%c",...)  doesn't produce ctime-like output on
 
4257
+   MinGW, so do it manually with snprintf.  */
 
4258
+
 
4259
+static int
 
4260
+gf_ctime (char *s, size_t max, const time_t timev)
 
4261
 {
 
4262
   struct tm ltm;
 
4263
   int failed;
 
4264
+  char buf[CTIME_BUFSZ + 1];
 
4265
   /* Some targets provide a localtime_r based on a draft of the POSIX
 
4266
      standard where the return type is int rather than the
 
4267
      standardized struct tm*.  */
 
4268
-  __builtin_choose_expr (__builtin_classify_type (localtime_r (timep, &ltm)) 
 
4269
+  __builtin_choose_expr (__builtin_classify_type (localtime_r (&timev, &ltm)) 
 
4270
                         == 5,
 
4271
-                        failed = localtime_r (timep, &ltm) == NULL,
 
4272
-                        failed = localtime_r (timep, &ltm) != 0);
 
4273
+                        failed = localtime_r (&timev, &ltm) == NULL,
 
4274
+                        failed = localtime_r (&timev, &ltm) != 0);
 
4275
   if (failed)
 
4276
-    return 0;
 
4277
-  return strftime (s, max, "%c", &ltm);
 
4278
+    goto blank;
 
4279
+  int n = snprintf (buf, sizeof (buf), 
 
4280
+                   "%3.3s %3.3s%3d %.2d:%.2d:%.2d %d",
 
4281
+                   "SunMonTueWedThuFriSat" + ltm.tm_wday * 3,
 
4282
+                   "JanFebMarAprMayJunJulAugSepOctNovDec" + ltm.tm_mon * 3,
 
4283
+                   ltm.tm_mday, ltm.tm_hour, ltm.tm_min, ltm.tm_sec, 
 
4284
+                   1900 + ltm.tm_year);
 
4285
+  if (n < 0)
 
4286
+    goto blank;
 
4287
+  if ((size_t) n <= max)
 
4288
+    {
 
4289
+      cf_strcpy (s, max, buf);
 
4290
+      return n;
 
4291
+    }
 
4292
+ blank:
 
4293
+  memset (s, ' ', max);
 
4294
+  return 0;
 
4295
 }
 
4296
 
 
4297
-/* In the default locale, the date and time representation fits in 26
 
4298
-   bytes. However, other locales might need more space.  */
 
4299
-#define CSZ 100
 
4300
 
 
4301
 extern void fdate (char **, gfc_charlen_type *);
 
4302
 export_proto(fdate);
 
4303
@@ -64,8 +86,8 @@
 
4304
 fdate (char ** date, gfc_charlen_type * date_len)
 
4305
 {
 
4306
   time_t now = time(NULL);
 
4307
-  *date = xmalloc (CSZ);
 
4308
-  *date_len = strctime (*date, CSZ, &now);
 
4309
+  *date = xmalloc (CTIME_BUFSZ);
 
4310
+  *date_len = gf_ctime (*date, CTIME_BUFSZ, now);
 
4311
 }
 
4312
 
 
4313
 
 
4314
@@ -76,10 +98,7 @@
 
4315
 fdate_sub (char * date, gfc_charlen_type date_len)
 
4316
 {
 
4317
   time_t now = time(NULL);
 
4318
-  char *s = xmalloc (date_len + 1);
 
4319
-  size_t n = strctime (s, date_len + 1, &now);
 
4320
-  fstrcpy (date, date_len, s, n);
 
4321
-  free (s);
 
4322
+  gf_ctime (date, date_len, now);
 
4323
 }
 
4324
 
 
4325
 
 
4326
@@ -91,8 +110,8 @@
 
4327
 PREFIX(ctime) (char ** date, gfc_charlen_type * date_len, GFC_INTEGER_8 t)
 
4328
 {
 
4329
   time_t now = t;
 
4330
-  *date = xmalloc (CSZ);
 
4331
-  *date_len = strctime (*date, CSZ, &now);
 
4332
+  *date = xmalloc (CTIME_BUFSZ);
 
4333
+  *date_len = gf_ctime (*date, CTIME_BUFSZ, now);
 
4334
 }
 
4335
 
 
4336
 
 
4337
@@ -103,8 +122,5 @@
 
4338
 ctime_sub (GFC_INTEGER_8 * t, char * date, gfc_charlen_type date_len)
 
4339
 {
 
4340
   time_t now = *t;
 
4341
-  char *s = xmalloc (date_len + 1);
 
4342
-  size_t n = strctime (s, date_len + 1, &now);
 
4343
-  fstrcpy (date, date_len, s, n);
 
4344
-  free (s);
 
4345
+  gf_ctime (date, date_len, now);
 
4346
 }
 
4347
Index: libgfortran/ChangeLog
 
4348
===================================================================
 
4349
--- a/src/libgfortran/ChangeLog (.../tags/gcc_4_8_3_release)
 
4350
+++ b/src/libgfortran/ChangeLog (.../branches/gcc-4_8-branch)
 
4351
@@ -1,3 +1,21 @@
 
4352
+2014-05-26  Janne Blomqvist  <jb@gcc.gnu.org>
 
4353
+
 
4354
+       Backport from mainline
 
4355
+       PR libfortran/61310
 
4356
+       * intrinsics/ctime.c (strctime): Rename to gf_ctime, use snprintf
 
4357
+       instead of strftime.
 
4358
+       (fdate): Use gf_ctime.
 
4359
+       (fdate_sub): Likewise.
 
4360
+       (ctime): Likewise.
 
4361
+       (ctime_sub): Likewise.
 
4362
+
 
4363
+2014-05-25  Janne Blomqvist  <jb@gcc.gnu.org>
 
4364
+
 
4365
+       Backport from trunk.
 
4366
+       PR libfortran/61187
 
4367
+       * io/unix.c (raw_close): Check if s->fd is -1.
 
4368
+       (fd_to_stream): Check return value of fstat(), handle error.
 
4369
+
 
4370
 2014-05-22  Release Manager
 
4371
 
 
4372
        * GCC 4.8.3 released.
 
4373
Index: libgfortran/io/unix.c
 
4374
===================================================================
 
4375
--- a/src/libgfortran/io/unix.c (.../tags/gcc_4_8_3_release)
 
4376
+++ b/src/libgfortran/io/unix.c (.../branches/gcc-4_8-branch)
 
4377
@@ -407,7 +407,9 @@
 
4378
 {
 
4379
   int retval;
 
4380
   
 
4381
-  if (s->fd != STDOUT_FILENO
 
4382
+  if (s->fd == -1)
 
4383
+    retval = -1;
 
4384
+  else if (s->fd != STDOUT_FILENO
 
4385
       && s->fd != STDERR_FILENO
 
4386
       && s->fd != STDIN_FILENO)
 
4387
     retval = close (s->fd);
 
4388
@@ -983,7 +985,15 @@
 
4389
 
 
4390
   /* Get the current length of the file. */
 
4391
 
 
4392
-  fstat (fd, &statbuf);
 
4393
+  if (fstat (fd, &statbuf) == -1)
 
4394
+    {
 
4395
+      s->st_dev = s->st_ino = -1;
 
4396
+      s->file_length = 0;
 
4397
+      if (errno == EBADF)
 
4398
+       s->fd = -1;
 
4399
+      raw_init (s);
 
4400
+      return (stream *) s;
 
4401
+    }
 
4402
 
 
4403
   s->st_dev = statbuf.st_dev;
 
4404
   s->st_ino = statbuf.st_ino;
 
4405
Index: .
 
4406
===================================================================
 
4407
--- a/src/.     (.../tags/gcc_4_8_3_release)
 
4408
+++ b/src/.     (.../branches/gcc-4_8-branch)
 
4409
 
 
4410
Property changes on: .
 
4411
___________________________________________________________________
 
4412
Modified: svn:mergeinfo
 
4413
   Merged /trunk:r211733